Flaskアプリケーション内で長時間実行スレッドを実装しています。デバッガモードでは、リロードが有効になっていると、リロード時に長時間実行されるスレッドは強制終了されません。Flaskの自動再読み込みと長時間実行のスレッド
代わりに、スレッドを作成および開始するコードはリロード後に実行されるため、各サイクルで追加のスレッドが作成されます。
リローダを無効にする以外に、これを防ぐにはどうすればよいですか?
mod_wsgiで自動リロード機能を使用している場合も同じですか?
更新:長時間実行されていたスレッドは、再ロード時に実際にWerkzeugによって殺されました。追加のコピーがあります。これは、Werkzeugのリローダが初期化コードを実行する余分なスレッドを取っているためです。それはプロセスが強制的にとにかく殺される5秒以内に完了しない場合、デフォルトでは、実行時間の長い要求の場合
http://code.google.com/p/modwsgi/wiki/ReloadingSourceCode
:
ありがとうございました。あなたがリンクしているドキュメントにあるように、デーモンモードではプロセス全体が再開され、スレッドも一緒に死んでしまいます。 –
はい、申し訳ありませんが、5秒間のタイムアウトがデーモンモード専用であることを明確にするのを忘れました。埋め込みモードのリロードは、文書化されているように再度異なります。 –
少なくとも私のアプリでは、5秒後でさえも、既存のスレッドは殺されません。何年もかけて何か変わったかもしれない。 –