django - Gunicorn worker 超时

标签 django nginx timeout gunicorn

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

当我使用 ./manage.py runserver 运行代码时,一切正常。对 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')

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

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

最佳答案

我在使用 Gunicorn、nGinx、Django 和 Requests 时遇到了同样的问题

每次我这样做:

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

worker 会超时

我通过从同步 (sync) 工作人员切换到异步 (eventlet) 工作人员解决了这个问题。

如果您正在启动命令行添加:
-k 'eventlet'

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

关于django - Gunicorn worker 超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15463067/

相关文章:

facebook - 共享缓存超时

Python:pysqlite库不支持C扩展加载

Django 和干草堆嗖嗖地响

python - Django中的SAML/Shibb身份验证

django - 将 Gunicorn 用于 Django 的 SSL

php - 我应该如何创建一个总是超时的测试资源

python - 如何有效地更改第 3 方 Django 应用程序?

tomcat - Nginx - 如何从 header 中获取值并将其设置到 cookie 中?

node.js - Nginx配置

Java readByte() 阻止应用程序