【发布时间】:2015-12-25 08:09:40
【问题描述】:
我正在尝试使用 Nginx + uwsgi 运行我的 Django 应用程序,但在加载一分钟后我收到了504 Gateway Time-out。
我的应用在多个网站上搜索特定内容时需要时间来完成所需的工作。
我的 nginx conf 是下一个:
upstream uwsgi {
server 127.0.0.1:8000;
}
server {
listen 80;
server_name server_ip;
root /opt/emails/subscriptions;
index index.html index.htm index.php;
location /emailsproject/ {
root /opt/emails/subscriptions/;
}
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://uwsgi;
proxy_set_header Host $http_host;
uwsgi_read_timeout 18000;
}
}
我的 uwsgi 脚本:
description "uWSGI server"
env PYTHONPATH=/opt/emails/subscriptions
env DJANGO_SETTINGS_MODULE=emailsproject.settings
start on runlevel [2345]
stop on runlevel [!2345]
respawn
exec uwsgi_python --http-socket 127.0.0.1:8000 -p 4 --wsgi-file /opt/emails/subscriptions/emailsproject/wsgi.py
我的 nginx 在 error.log 中给了我以下错误消息:
2015/09/28 02:15:57 [error] 4450#0: *19 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 37.235.53.246, server: my_server_ip, request: "POST /home/ HTTP/1.1", upstream: "http://127.0.0.1:8000/home/", host: "my_server_ip", referrer: "http://my_server_ip/home/"
有人知道我该如何摆脱这个吗?我已经尝试了大量的 stackoverflows 解决方案,但没有一个对我有用。
【问题讨论】:
-
如果您的应用程序正在运行一个较长的进程,您可以尝试使用 celery 异步运行它。 Nginx 可能有办法增加超时时间,但是长时间同步任务并不是一个好主意。 celery.readthedocs.org/en/latest/django/…
-
你找到解决办法了吗?