我尝试使用 eventlet worker (django app) 运行 gunicorn:
python manage.py run_gunicorn -k eventlet -t 5
如果我有两个不好的看法:
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 有意义(因为工人挂起并且 gunicorn 可以理解它)。但是 gunicorn 不能处理不好的 view2。
在实际情况中,似乎我们有一些无限循环,其中包含 time.sleep() 或其他猴子修补方法,一段时间后,我们的应用程序不会挂起,但会有许多无限绿色线程并开始缓慢工作。
我的问题是我如何设置 gunicorn 以了解 view1 有什么问题并重新启动工作人员。