Gunicorn工人超时(Gunicorn worker timeout)

2019-08-17 16:24发布

我在Gunicorn运行Nginx的背后Django应用程序。 一切工作正常,exect一个奇怪的事情:我有一个“下载”视图和一个RESTful API JSON。 当调用下载查看我使用的urllib2访问JSON API来获取信息。 而excactly当我尝试这样做HTTP GET请求JSON API使用,请求超时并产生错误HTTP错误504:网关超时。

当我与./manage.py运行代码的runserver一切工作正常。 该HTTP GET请求JSON API使用也只需要几毫秒,所以没有运行到超时的危险。

这里的情况在伪代码:

的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')

opener.open()符合四个Gunicorn运行时,运行到超时通话,与运行时./manage.py runserver everytihng工作正常(和API调用只需要几毫秒。

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

Answer 1:

我不得不使用Gunicorn,NGINX,Django和同样的问题要求

每次我做了一次:

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

工人们超时

我从Syncronous(同步)工人切换到异步(eventlet)职工解决了这个问题。

如果你正在启动命令行添加:

-k 'eventlet'

如果您使用的是配置文件中加入:

worker_class = "eventlet"


文章来源: Gunicorn worker timeout