Gunicorn工人超时

时间:2013-03-17 16:17:28

标签: django nginx timeout gunicorn

我在Nginx后面的Gunicorn中运行了一个Django应用程序。一切正常,可以解决一件奇怪的事情:我有一个“下载”视图和一个RESTful json API。调用下载视图时,我使用urllib2访问json API以获取信息。并且当我尝试对json api执行此http请求时,请求超时,出现错误HTTP错误504:网关超时。

当我使用./manage.py运行服务器运行代码时,一切正常。对json api的http get请求也只需几毫秒,因此没有遇到超时的危险。

这里是伪代码中的情况:

myproject / views.py: (可访问:http://myproject.com/download

1   def download(request, *args, **kwargs):
2       import urllib2
3       opener = urllib2.build_opener()
4       opener.open('http://myproject.com/api/get_project_stats')

第4行中的opener.open()调用在Gunicorn中运行时会超时,当使用./manage.py runserver运行时,everytihng工作正常(并且api调用只需几毫秒。

有没有人有同样的问题?更重要的是:你是如何解决它的?

1 个答案:

答案 0 :(得分:14)

使用Gunicorn,nGinx,Django和Requests

我有同样的问题

我每次都这样做:

response = requests.get('http://my.url.com/here')

工人会超时

我通过从Syncronous(同步)工作者切换到异步(eventlet)工作者来解决问题。

如果要启动命令行add:

-k 'eventlet'

如果您使用的是配置文件,请添加:

worker_class = "eventlet"