Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django Gunicorn&x2B;eventlet超时_Django_Gevent_Gunicorn_Eventlet - Fatal编程技术网

Django Gunicorn&x2B;eventlet超时

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') 选项

我尝试使用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')
选项-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')