リクエストハンドラを呼び出すスレッド(プロセス)を起動/制御するWebサーバですか?または、Django自体に非同期/マルチスレッドアーキテクチャがありますか?問題は、(ajax)リクエストが長時間処理されているときに、このクライアントの再送信中に以前のハンドラが終了した場合です。私はこれをいくつかコントロールしたいと思います。いくつかのクリーンアップアクションを実行します。場合によってはハンドラを手動で終了することもできます。Djangoハンドラのスレッドを管理する
答えて
DjangoはWebサーバではない、それはWebフレームワークですので、あなたが言ったように確かに、それは、着信要求を処理するためのスレッドを生成しますが、それは受け入れ、最終的にの[HTTP(S)]の要求に応答するためのWebサーバの仕事ですユーザー。
あなたが直面しているのは、おそらく計算に時間がかかり、Webサーバー(おそらくnginxまたはapache)が要求をタイムアウトすることです。タイムアウトを防ぐには、Webサーバーのタイムアウト設定を増やす必要があります。この人はほとんどように、gunicornの同類を使用uwsgi、mod_wsgiをとするために
はまた、Djangoは仕事を得るために、あなたは、WSGIを理解コネクタを必要としています。タイムアウトまで長い値を受け入れるように設定する必要もあります。
たとえば、Nginx/Gunicornを使用している場合は、this questionを参照して、タイムアウトの設定方法を確認してください。
最後に、最後のメモとして、リクエストで大量の計算を行っている場合、ユーザーのリクエストをブロックしてバックグラウンドで実行しないほうがよいでしょう。 Celeryは、この状況で見ると非常に便利なツールです。
巨大な計算でない場合は、単にタイムアウト値を大きくすることができます。しかし、計算時間が長くかかる、例えば45秒以上かかる場合は、セラーリーとバックグラウンド処理のリクエストを使用して、やり方を変えたり、ソリューションを実装する方がよいでしょう。
編集。
スレッドを正確に処理していることと裏で何が起こっているのかを知りたい場合は、Gunicornについてthis postingと読んでみることをおすすめします。また、それを読む前にdesign page of Gunicornで読むのも良いです。基本的に、WSGIプログラムとWebServerの両方が、タイムアウトの場合にスレッドを強制終了します。
djangoスレッドのタイムアウトが早ければ(gunicornタイムアウト)、WSGIプログラムはスレッドを強制終了します。一方、gunicornのタイムアウトがNginxのタイムアウトよりも長く設定されている場合、Nginxはスレッドを強制終了します。
- 1. django:インライン管理の保存のためのハンドラ
- 2. Django - Django管理者のページコンテンツを管理する
- 3. Javaスレッド管理
- 4. Django管理者:データベース管理
- 5. のWebSphereスレッド管理
- 6. Djangoの管理
- 7. Djangoの管理 -
- 8. Djangoの管理
- 9. Django管理サイトのDjango管理サイトのdjango-nonrelから
- 10. Muleメッセージ/スレッド管理
- 11. スレッドを管理するためのMSMQ?
- 12. Django管理パネル
- 13. Django管理インターフェース
- 14. クラウドのLambdaハンドラ資格の管理
- 15. Django管理のオーバーライドセーブメソッド
- 16. Djangoの管理カスタムビュー
- 17. Djangoのユーザー管理
- 18. Djangoの管理インライン
- 19. は、Djangoの管理
- 20. Djangoのアプリ(...)/管理/
- 21. Djangoの管理フォーム
- 22. Djangoの管理 - save_formset
- 23. Django、ユーザーデータの管理
- 24. スレッド間でのメモリ管理
- 25. C++マルチスレッド:スレッドの管理
- 26. Javaでのスレッド管理
- 27. Javaでスレッドを管理する者
- 28. .NET WinFormアプリケーションでスレッドを管理する
- 29. 管理対象スレッドをフリーズする
- 30. djangoの管理インポートフォームをインポートするimport_export
ご清聴ありがとうございます。私のデータ検索は長く、セロリーを使用する途中です。しかし、私はまだ質問に興味があります。 2人のWHOがスレッドを殺す責任がありますか? (重複した要求が受け取られたとき、前のものが計算されている間、私が見るもの)。 CAN他の方法でこの動作に正当な影響を与え、サーバーのタイムアウトを変更したり、必要に応じて強制的にスレッド終了を強制できますか? – VladimirLenin
@VladimirLenin私の答えを更新しました。 – SpiXel