私のスタックは Nginx + Flup + Flask です。
したがって、寿命が有限のバックグラウンド スレッドを実行する有限のスレッドがあります。
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 がスレッドを強制終了するのを、少なくともすぐには停止します。
ありがとう!