我的堆栈是 Nginx + Flup + Flask。
所以我有一个有限线程,它运行一个具有有限生命周期的后台线程。
t = threading.Thread(target=campaign.run, args=(campaign_obj,))
t.setDaemon(False)
t.start()
它被执行,持续大约一两分钟,然后结束。问题是,为了响应,我让它在后台进程仍在运行时首先向请求返回一个值。
问题是,在某种程度上,fcgi 线程不断被杀死。
我尝试将 connection_timeout 更改为 1800s
keepalive_timeout 1800s;
重启nginx,现在线程响应后几乎立即被切断。
我怎么能
1)简单地修复我的python代码/fcgi代码(不用redis/rabbitmq/celery重构成一个巨大的新堆栈,因为这真的是一个快速的项目)
2)阻止 nginx 杀死我的线程,至少不会那么快。
谢谢!