使用' While True'的子流程在3640次迭代后结束

时间:2017-04-25 02:22:43

标签: python django multithreading subprocess

我有一个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实现,它继续发送流式推文并在不同的后台线程上不间断地分析它们,以免干扰注册过程。

上述测试就是为了这个目的。 任何帮助表示赞赏。我们也欢迎任何其他建议。

感谢。

0 个答案:

没有答案