Django Gunicorn&x2B;eventlet超时
我尝试使用eventlet worker(django应用程序)运行gunicorn: 如果我有两个不好的观点:Django Gunicorn&x2B;eventlet超时,django,gevent,gunicorn,eventlet,Django,Gevent,Gunicorn,Eventlet,我尝试使用eventlet worker(django应用程序)运行gunicorn: 如果我有两个不好的观点: 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') 选项
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()或其他猴子补丁方法中有一些无限循环,一段时间后,我们的应用程序不会挂起,但会有许多无限绿色线程,并开始缓慢工作
我的问题是如何设置gunicorn,使其能够理解view1的错误并重新启动worker。是否要限制执行任何请求的最长时间?那是个好主意。截至2013-02年,Gunicorn不支持这种开箱即用的服务
您可以使用来实现它。根据您是想要快速还是共享,您可以只在应用程序中添加超时,或者将超时作为Gunicorn的一项功能。他们的观点很容易理解。可能需要一些澄清。”仅对view2有意义。。。但是gunicorn不处理vad视图2'-数字正确吗?是的。我的目标是为每个请求添加超时。我们使用heroku,他们的负载平衡器有30秒的代理超时。所以任何超过30秒的请求都没有意义。非常感谢。但我真的不想要叉子,我希望有任何标准的方法。所以我喜欢为每个请求添加eventlet.TImeout(30)。
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')