ホームページ >バックエンド開発 >Python チュートリアル >Flask 開発サーバーが 2 回実行されているように見えるのはなぜですか?
Flask 開発サーバーが 2 回実行されるように見える理由
Flask では、Werkzeug ライブラリが開発サーバーに app.run() を提供します。 Werkzeug はコードが更新されるたびにリローダーを利用してプロセスを再起動します。このリローダーは子プロセスを生成し、subprocess.call() を使用してスクリプトを再度実行します。
開発サーバーを実行すると、スクリプトは元のプロセスと子プロセスの両方によって実行され、重複した印刷行。
リローダーの無効化
余分な実行を排除するには、次のようにします。 app.run() で use_reloader を False に設定してリローダーを無効にします。これにより、自動リロードが防止されますが、ライブリロード機能も無効になります。
または、--no-reload オプションを指定して flask run コマンドを使用することもできます。
子プロセス
元のプロセスと子プロセスを区別する必要がある場合は、 werkzeug.serving.is_running_from_reloader 関数。子プロセスにいる場合に True を返します。
モジュール グローバルの設定
Web の存続期間全体にわたるモジュール グローバルの設定用サーバーの場合は、@app.before_first_request デコレータの使用を検討してください。このデコレータは、最初のリクエストが受信されたとき、各リロード後に 1 回だけ実行される関数に適用されます。
WSGI サーバーに関する考慮事項
フォークまたは新しいサブプロセスを使用する WSGI サーバー上のアプリケーションでは、before_first_request ハンドラーが、新しいサブプロセスごとに 1 回ずつ、複数回呼び出される可能性があります。プロセス。
以上がFlask 開発サーバーが 2 回実行されているように見えるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。