Gunicorn工人超时

Ant*_*ton 12 django timeout nginx 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')
Run Code Online (Sandbox Code Playgroud)

第四opener.open()行中的调用在Gunicorn中运行时会进入超时状态,当./manage.py runserver每次运行时运行正常(并且api调用只需要几毫秒).

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

Sin*_*lil 15

我使用Gunicorn,nGinx,Django和Requests也有同样的问题

每次我这样做:

response = requests.get('http://my.url.com/here')
Run Code Online (Sandbox Code Playgroud)

工人们会超时

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

如果要启动命令行添加:

-k 'eventlet'
Run Code Online (Sandbox Code Playgroud)

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

worker_class = "eventlet"
Run Code Online (Sandbox Code Playgroud)