我的堆栈是Nginx+Flup+Flask。在
所以我有一个有限线程,它运行一个有有限生存期的后台线程。在
t = threading.Thread(target=campaign.run, args=(campaign_obj,))
t.setDaemon(False)
t.start()
它被执行,持续一到两分钟,然后就结束了。关键是,为了响应,我让它在后台进程仍在运行时首先向请求返回一个值。在
问题是,不知何故,fcgi线程总是被杀死。在
我试过把连接超时改为1800秒
^{pr2}$重新启动nginx,现在它几乎在线程响应后立即被切断。在
我怎么也可以
1)简单地修复我的python代码/fcgi代码(不用用redis/rabbitmq/celery重构成一个巨大的新堆栈,因为这确实是一个快速的项目)
2)阻止nginx杀死我的线程,至少不要这么快。在
谢谢!在
使用多处理
一旦您返回一个值并完成请求,FastCGI将在您之后清理,这意味着您生成的所有线程。如果你真的需要你的任务继续进行,你必须使用多处理,这样你产生的进程才能在请求结束后继续存在。在
否则,芹菜真的很容易设置,而且正好解决了这个问题你有。。。在
相关问题 更多 >
编程相关推荐