Django の何らかの形式のシャットダウン フックで解決できると期待している問題があります。
私はまだ Python/Django 開発の初心者であり、学習を支援するために、ブラウザーで実行される COMET/リバース Ajax スタイルのチャット サイトを開発するプロジェクトを自分で設定しました。ブラウザーは、メッセージがないかサーバーを継続的にポーリングします。サーバーは、ポーリング リクエストを受信すると、待機中のメッセージがあるかどうかを確認し、メッセージがない場合は、既に取得されているthreading.Lockオブジェクトのロックを取得しようとします。これにより、メッセージが受信され、前述のロックが解放されるまで、要求を処理しているスレッドがブロックされます。
サーバーをシャットダウンすると問題が発生します。この時点で、開発サーバー (python manage.py runserver) を使用しています。上記で説明したプロセスからブロックされたスレッドがある場合、サーバーはシャットダウンしません。
サーバーがシャットダウンを試みたときにコードを実行して、待機中のスレッドを解放できる方法はありますか?
次の同様の質問を見ましたが、役に立ちませんでした。そのようなイベント フックは存在しないという憶測がありましたが、決定的な答えはありません。私は高低をグーグルで検索しましたが、運がありませんでした。
Python 2.7 と Django 1.5 を使用しています。
あなたが提供できるどんな助けにも感謝します