我的堆栈是Nginx + Flup +烧瓶。
所以我有一个有限的线程运行一个后台线程,它有有限的生命周期。
t = threading.Thread(target=campaign.run, args=(campaign_obj,))
t.setDaemon(False)
t.start()它被执行,持续大约1到2分钟,然后结束。问题是,为了响应性,在后台进程仍在运行时,我让它首先返回一个值给请求。
问题是,不知怎么的,在某种程度上,fcgi线程一直在被杀死。
我试过把connection_timeout改成1800
keepalive_timeout 1800s;重新启动nginx,现在它几乎在线程响应后立即被切断。
我怎么能
1)简单地修复我的python代码/ fcgi代码(不需要重构到一个具有redis/rabbitmq/celery的巨大的新堆栈中,因为这是一个非常快速的项目)
2)阻止nginx杀死我的线,至少不要这么快。
谢谢!
发布于 2013-07-26 03:28:48
使用多处理
一旦您返回一个值并完成请求,FastCGI将在您之后清理,这意味着您生成的所有线程。如果您确实需要继续执行任务,则必须使用多重处理,这样您生成的进程才能在请求结束时存活下来。
否则,芹菜是很容易设置,并解决了这个问题,你有……
https://stackoverflow.com/questions/17871403
复制相似问题