Django + uWSGI需要很长时间才能做出回应

时间:2016-03-09 11:05:36

标签: django nginx uwsgi

我正在使用Nginx和uWSGI运行Django Web应用程序。现在我遇到了django中的finish_process视图的问题

我在Django finish_process视图的开头和结尾添加了日志记录。 我在17:20:18提出请求,视图在17:20:48结束。但是uWSGI此时没有返回响应,并且在577秒之后,它在尝试向客户端写入响应时抛出IOError,因为nginx关闭了连接(uwsgi_read_timeout是300秒)。

我的问题是为什么在Django处理视图后uWSGI持有响应这么久?我有点不知所措。

Django日志:

[INFO]246 views.py/finish_process 2016-03-06 17:20:18: [VIEW][START] finish_process: id=4
[INFO]282 views.py/finish_process 2016-03-06 17:20:48: [VIEW][END] finish_process: id=4

uWSGI日志:

Sun Mar  6 17:29:55 2016 - uwsgi_response_writev_headers_and_body_do(): Broken pipe [core/writer.c line 296] during POST /api/finish_process/ (10.11.16.251)
IOError: write error
[pid: 3275|app: 0|req: 48689/48688] 10.11.16.251 () {34 vars in 553 bytes} [Sun Mar  6 17:20:18 2016] POST /api/finish_process/ => generated 0 bytes in 577024 msecs (HTTP/1.1 200) 3 headers in 0 bytes (0 switches on core 4)

Nginx error.log:

2016/03/06 17:25:18 [error] 3052#0: *44561 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 10.11.16.251, server: skyline, request: "POST /api/finish_process/ HTTP/1.1", upstream: "uwsgi://unix:/var/run/skyline.sock:", host: "10.11.16.253"

uwsgi.ini:

[uwsgi]
socket = /var/run/skyline.sock
chdir = /opt/skyline
processes = 1
threads = 10
master = true
env = DJANGO_SETTINGS_MODULE=skyline.prod_settings
module = skyline.wsgi:application
chmod-socket = 666
vacuum = true
die-on-term = true

Nginx conf:

server {
    listen 80;
    server_name skyline;
    charset utf-8;
    client_max_body_size 50M;
    uwsgi_read_timeout 300;

    location / {
        include uwsgi_params;
        uwsgi_pass unix:/var/run/skyline.sock;
    }
}

更新

解决。我犯了一个错误。

0 个答案:

没有答案