我的堆棧是Nginx + Flup + Flask。如何在請求使用nginx/flup重新啓動後運行後臺線程?
所以我有一個有限的線程運行具有有限生命週期的後臺線程。
t = threading.Thread(target=campaign.run, args=(campaign_obj,))
t.setDaemon(False)
t.start()
它被執行,持續大約一分鐘或2分鐘,然後結束。事情是,爲了響應,我已經在後臺進程仍在運行時首先向請求返回一個值。
問題是,在某種程度上,fcgi線程不斷死亡。
我曾試圖改變connection_timeout到1800年
keepalive_timeout 1800s;
nginx的重新啓動,現在它被幾乎立即的線程響應後切斷。
我怎樣才能既
1)簡單的解決我的Python代碼/ fcgi的代碼(不重構與Redis的/ RabbitMQ的一個巨大的新的堆棧/芹菜,因爲這實在是一個快速項目)
2)停止nginx殺死我的線程,至少不會那麼快。
謝謝!
使用子流程。 – snf
子進程或多進程? – nubela
對不起,我的意思是多處理:http://docs.python.org/2/library/multiprocessing.html#the-process-class。 – snf