我有一个Django应用程序,每次有数据库插入时都会生成一个子进程。
models.py
# spawn subprocess to trigger tweepy
# output of subprocess DOES NOT log to the console.
def tweepy_tester(sender, **kwargs):
if kwargs['created']:
logger.error('tweepy trigger-start!')
p = subprocess.Popen([sys.executable, "/Users/viseshprasad/PycharmProjects/Blood_e_Merry/loginsignup/tests.py"],
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT)
logger.error('tweepy trigger-over!')
# use post_save to trigger tweepy later
post_save.connect(tweepy_tester, sender=User)
tests.py
logger = logging.getLogger(__name__)
# Create your tests here.
def for_thread():
i = 0
while True:
f = open('test.txt', 'a')
f.write('Tweepy triggered ' + str(i) + '\n') # python will convert \n to os.linesep
f.close() # you can omit in most cases as the destructor will call it
i += 1
for_thread()
触发器运行正常,但子进程只将3640行写入 test.txt 文件,即使我使用了while True:
我基本上是在寻找一个子进程来在触发器后运行不间断,作为一个单独的线程而不会干扰主线程。
目的:
我用通常的python manage.py runserver
运行我的应用程序。
用户注册 - >数据库插入 - >触发我的tweepy实现,它继续发送流式推文并在不同的后台线程上不间断地分析它们,以免干扰注册过程。
上述测试就是为了这个目的。 任何帮助表示赞赏。我们也欢迎任何其他建议。
感谢。