イベントレットワーカー(djangoアプリ)でgunicornを実行しようとしています:
python manage.py run_gunicorn -k eventlet -t 5
2 つの悪いビューがある場合:
def view1(request):
while 1:
time.sleep(0.001) #same as eventlet.sleep
return HttpResponse('ok')
def view2(request):
while 1:
pass
return HttpResponse('ok')
オプション -t (--timeout) は、view2 に対してのみ意味があります (worker がハングし、gunicorn がそれを理解できるため)。しかし、gunicorn は悪いビュー 2 を処理しません。
実際のケースでは、time.sleep() またはその他のモンキー パッチを適用したメソッドを使用した無限ループがいくつかあり、しばらくするとアプリケーションはハングしませんが、多くの無限の緑色のスレッドがあり、ゆっくりと動作を開始します。
私の質問は、ビュー1の何が問題なのかを理解してワーカーを再起動できるようにgunicornをセットアップする方法です。