2012-03-12 20 views
4

Flaskアプリケーション内で長時間実行スレッドを実装しています。デバッガモードでは、リロードが有効になっていると、リロード時に長時間実行されるスレッドは強制終了されません。Flaskの自動再読み込みと長時間実行のスレッド

代わりに、スレッドを作成および開始するコードはリロード後に実行されるため、各サイクルで追加のスレッドが作成されます。

リローダを無効にする以外に、これを防ぐにはどうすればよいですか?

mod_wsgiで自動リロード機能を使用している場合も同じですか?

更新:長時間実行されていたスレッドは、再ロード時に実際にWerkzeugによって殺されました。追加のコピーがあります。これは、Werkzeugのリローダが初期化コードを実行する余分なスレッドを取っているためです。それはプロセスが強制的にとにかく殺される5秒以内に完了しない場合、デフォルトでは、実行時間の長い要求の場合

http://code.google.com/p/modwsgi/wiki/ReloadingSourceCode

答えて

3

のmod_wsgiのリロードがに記載されています。これは、要求が完了しないためにプロセスロックアップの問題を回避するためです。

+0

ありがとうございました。あなたがリンクしているドキュメントにあるように、デーモンモードではプロセス全体が再開され、スレッドも一緒に死んでしまいます。 –

+0

はい、申し訳ありませんが、5秒間のタイムアウトがデーモンモード専用であることを明確にするのを忘れました。埋め込みモードのリロードは、文書化されているように再度異なります。 –

+0

少なくとも私のアプリでは、5秒後でさえも、既存のスレッドは殺されません。何年もかけて何か変わったかもしれない。 –

関連する問題