Gunicorn的Nginx超时问题

我在gunicorn + nginx上运行django。 我正面临file upload的问题。 其实上传工作正常,但gunicorn超时,从而造成这在nginx:

2011/07/25 12:13:47 [error] 15169#0: *2317 upstream timed out (110: Connection timed out) while reading response header from upstream, client: IP-ADDRESS, server: SERVER, request: "GET /photos/events/event/25 HTTP/1.1", upstream: "http://127.0.0.1:29000/photos/events/event/25", host: "HOST", referrer: "REFERER_ADDRESS" 

如果我刷新页面,我可以看到所有的照片上传就好了。 问题是,它会导致超时,从而给上传不起作用的印象。

这里是我的gunicorn conf:

 bind = "127.0.0.1:29000" logfile = "/path/to/logs/gunicorn.log" workers = 3 

我试着改变超时时间,但没有奏效。

您可以尝试在Nginx中升级您的代理传递的超时时间,方法是:

 proxy_connect_timeout 75s; proxy_read_timeout 300s; 

在/ var / nginx / sites-available / [site-config]或/var/nginx/nginx.conf中,如果你想增加nginx服务的所有站点的超时限制。

你必须添加--timeout 300以及你的gunicorn进程/configuration。

这解决了我的问题在过去更大的上传。

这不是一个nginx超时,但可能是一个Gunicorn超时。 Gunicorn默认为30秒超时。

一般来说,您应该通过不需要超过30秒的端点返回来解决这个问题,但是如果这个端点很less使用,那么也可以增加这个超时值。 如果你这样做,你也应该增加gunicorn工作进程的数量。

为了增加超时和gunicorn的工作,你可以在开始时添加下面的命令行选项:

gunicorn – 超时120 – 工人

我们使用Django + nginx + gunicorn也遇到同样的问题。 从Gunicorn文档中我们已经configuration了几乎没有区别的优雅超时。

经过一番testing,我们发现解决scheme,要configuration的参数是:timeout(而不是正常超时)。 它像一个时钟一样工作

那么,做:

1)打开gunicornconfiguration文件

2)将TIMEOUT设置为您所需要的值 – 以秒为单位

 NUM_WORKERS=3 TIMEOUT=120 exec gunicorn ${DJANGO_WSGI_MODULE}:application \ --name $NAME \ --workers $NUM_WORKERS \ --timeout $TIMEOUT \ --log-level=debug \ --bind=127.0.0.1:9000 \ --pid=$PIDFILE 

这可能会帮助有类似问题的人。

我在我的Django应用程序中得到了来自nginx和gunicorn的超时错误。 由于我得到了来自nginx的超时错误,我从Django看不到真正的错误。 添加像fijterbuild议的新超时后。 我可以看到错误在settings.py文件中。

如果您将DEBUG设置为False,并且未在ALLOWED_HOSTS中添加域名,则可能会出现此错误。

我刚刚在settings.py中的ALLOWED_HOSTS中添加了域,错误消失了。

很简单的解决scheme