フラスコにオプションapp.run(threaded=True))
を設定すると、私のサービスは複数の同時リクエストを処理できます。しかし、私のサービスは、複数の同時リクエストを処理するためにできるだけ多くのCPUリソースを消費するようです。 私のアプリで使用されているリソースを制限または制御する方法はありますか?フラスコ内の複数の同時リクエストの制御リソース
答えて
リソースモジュールを試すことができます。 this postから取られます。あなたはCPUのためにこれのような何かをするでしょう。 Here isリソースモジュール上のページ。
import resource
sec = 60 * 60 # this is one hour of time.
resource.setrlimit(resource.RLIMIT_CPU, sec)
これは、プロセスがCPUで許可される時間(秒)を変更することに注意してください。プロセスのスタック/ヒープサイズを制限する場合は、resource.RLIMIT_STACK
とresource.RLIMIT_HEAP
を使用する必要があります。これらはバイト単位であるため、コードは次のようになります。 gunicorn --workers = 4 -t:
import resource
mem = 1024 * 1024 # this is one megabyte, you want much more than this normally
resource.setrlimit(resource.RLIMIT_STACK, mem)
resource.setrlimit(resource.RLIMIT_HEAP, mem)
これは矛盾しますか?私のサービスはマルチプロセッシングであるため、各リクエストを処理するために4つのプロセスが作成されます。 –
いいえ、マルチプロセッシングは、スレッドのように見えなくてもスレッドを使用します。プロセスは単一のプログラムであり、プログラムが別のプログラムを開始するとスレッドとして開始する必要があります。私はこれについて間違っているかもしれません。あなたはスレッドとして起動しなければならないかもしれませんが、私はPythonのマルチプロセスがどのように動作するのか分かりません。それがうまくいかない場合は、各プロセスで同じことを行うだけで、それぞれのリソースの量を制限できます。 –
実際には、wsgiサーバー(gunicorn)が私の問題を解決しました。 –
- 1. 複数の同時HTTPリクエスト
- 2. matplotlibの複数のボタンの色を同時に制御します
- 3. 静的リソースのアクセス制御
- 4. 静的クラスと複数の同時リクエスト
- 5. 複数の同時Ajaxリクエストが遅い
- 6. デフォルトの同時実行制御2005
- 7. Laravelの同時実行制御
- 8. Djangoモデルの同時実行制御
- 9. NodeJSとMongoDBスタックの同時制御
- 10. RX.JS Redux Observable複数の同時取得リクエスト同時に
- 11. 複数のプロットがGUIの同じポップアップメニューで制御される
- 12. フラスコを同時にデコレータ複数のフィールドを検証し
- 13. XACML:リソース内のプロパティへのアクセスを制御する方法
- 14. PHPで同じユーザ名で複数のログインを制御する
- 15. 複数のテキストボックスを同じイベントタイプで制御する
- 16. IISとColdfusionの同時リクエスト制限
- 17. サーブレット制御の複数の要求
- 18. MVCビュー内のセッション変数の制御
- 19. iOS - 複数の非同期リクエストを同時に実行する
- 20. UWPナビゲーション(Template10)、ピボット制御、複数のフレーム
- 21. 制御する複数のUIファイルが
- 22. drupal7での複数ドメインユーザーログインアクセス制御
- 23. 複数のキャンバスアニメーションを制御する
- 24. フラスコ内の複数経路指定 - Python
- 25. 複数の同じWebリクエスト
- 26. $ httpリクエストでのヘッダーの制御
- 27. リフレッシュ時の制御値
- 28. QTimerの制御時間?
- 29. PostgreSQLのマルチバージョン同時実行制御の直接使用
- 30. Cでの同時スレッド数を制御する最良の方法#
私のアドバイスは、彼らの両方が、私はオプションでgunicornしようとしたシステムリソース – danidee
を制御するためのオプションがあり、uwsgiのような優れたWSGIサーバを使用するか、またはフラスコの開発サーバーではないgunicornことです3000 myapp -bポート。 4つのリクエストがあるときに私のサービスが約8-10のプロセスを作成したため、私のケースでは動作しているのかどうかはわかりません(CPUリソースの半分をサービスに使用したいだけです)。 –
私は、並列プロセスの数は、プロセッサのコア数の半分に等しくなければならないと考えています。例えば4コアCPU上の2つのプロセスは、リソースの50%しか消費できません。 – sytech