問題タブ [waitress]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 内部でマルチプロセッシングを使用しているときに、API を介してフラスコサーバーを再起動する方法
リクエスト後にデータを取得するウェイトレスを備えたフラスコアプリがあり、長い計算を実行してlong_function
結果を返します。これらの計算は並列でpebble
あり、タイムアウト オプションが必要なため使用しています。また、ユーザーがサーバーを再起動するリクエストを送信できるようにしたい (つまり、スレッドの数を変更したいwaitress
)
私はこの解決策を見つけましたhttps://gist.github.com/naushadzaman/b65534d912f1551c7d8366b326b7a151pebble
ほとんどの場合は機能しますが、プール
とうまくやり取りしません。サーバーがプールにあるときにサーバーをリロードできません。マルチプロセッシングを使用long_function_without_pool
しない を使用すると、サーバーが現在何らかのジョブを実行していても、サーバーをリロードできます (もちろん、結果は失われますが、これが私が望んでいることです)。しかしlong_function
、プールが閉じられるのを待つ必要があり、それからサーバーを再起動できます。プールがまだ開いているときに再起動要求を送信しようとすると、エラーが発生します。
OSError: [Errno 98] Address already in use
したがって、ランニングp.terminate()
がある場合は機能しないと思います。Pool
このコードを修正するにはどうすればよいですか、または別のソリューションを使用する必要がありますか?
このエラーを再現する簡単な手順:
アプリを起動
本文が空の POST リクエストをhttp://localhost:5221/に送信します
応答を受け取る前に (5 秒かかります)、GET 要求を変数なしでhttp://localhost:5221/restart/に送信します。
楽しい。サーバーがスタックしており、何にも応答していません
/li>
python - コマンド ラインを使用して Windows でウェイトレス フラスコ アプリを実行できない
サンプル フラスコ アプリ用に Windows でウェイトレス WSGI を実行しようとしていますが、動作せず、エラーが発生します。
私は使っている
以下は、同じディレクトリにある私の2つのファイルです
myapp.py
create_app.py