我尝试使用eventlet worker (django应用程序)运行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 )只对view2有意义(因为worker挂起,并且gunicorn可以理解它)。但是gunicorn不能处理坏的view2。
在实际情况中,我们似乎有一些无限循环,里面有time.sleep()或其他猴子打补丁的方法,一段时间后,我们的应用程序不会挂起,但会有许多无限的绿色线程,并开始缓慢地工作。
我的问题是,我如何设置gunicorn,使其能够了解view1的问题并重新启动worker。
发布于 2013-03-14 16:41:11
是否要限制执行任何请求的最长时间?这是个好主意。从2013-02年度开始,Gunicorn不支持这种开箱即用的方式。
您可以使用eventlet.Timeout来实现它。根据你是想要快速超时还是想要分享,你可以只在你的应用程序中添加超时,或者将其作为Gunicorn的一个功能。他们的code很容易理解。
https://stackoverflow.com/questions/15398092
复制相似问题