Flaskを使用してPython Webアプリケーションを作成しています。私のアプリケーションは起動時に別のサーバとの接続を確立し、そのサーバとバックグラウンドで定期的に通信します。Flask/Werkzeugデバッガ、プロセスモデル、初期化コード
Flaskの組み込みデバッガ(debug = Falseでapp.runを呼び出す)を使用しない場合は問題ありません。
私が組み込みデバッガ(debug = Trueでapp.runを呼び出す)を使用すると、Flaskは同じコードを持つ2番目のPythonプロセスを開始します。それは、HTTP接続をリッスンし、アプリケーションが想定しているように動作してしまう子プロセスです。
しかし、これは私の邪魔になります両方のプロセスで実行される起動コード。私は外部サーバへの2つの接続、2つのプロセスは同じログファイルへのロギング、そして一般的には互いの上を移動します。
私はapp.run()を呼び出す前に実際の作業を行うべきではないと考えていますが、この初期化コードはどこに置くべきですか(私はFlaskプロセスグループごとに一度だけ実行します。起動時にクライアント要求とは独立して実行する必要があります)。
私はthis question about "Flask auto-reload and long-running thread"と多少関連していますが、やや異なっており、答えが私を助けませんでした。 (私もデーモンスレッドとしてマークされた別々の長時間実行スレッドを持っていますが、リロードが始まると殺されますが、私が解決しようとしている問題はリロードが起こる前です。 reload;私は余分なプロセスと、親プロセスで不要なコードを実行するのを避ける正しい方法を心配しています)。
この質問(および回答)のおかげで、この1つは私に似たようなことをしようとすると困惑しました。 – akatkinson