post_action status
Maxim Dounin
mdounin на mdounin.ru
Сб Мар 10 21:29:45 UTC 2012
Hello!
On Fri, Mar 09, 2012 at 03:02:41PM -0800, Roman Vasilyev wrote:
> Понадобилось мне отрабатывать некий скрипт по окончании закачки
> файла, сделал я конструкцию вида, упрощенно ниже
> location /download {
> rewrite ^ /uwsgi/download.py last;
> location ~ /download/storage {
> internal;
> post_action /uwsgi/last.py;
> }
> }
>
> и вижу постоянно в error.log сообщение вида
> upstream sent neither valid HTTP/1.0 header nor "Status" header line
> while reading response header from upstream, client: X server:
> localhost, request: "GET /uwsgi/debug.py?id=X HTTP/1.1", upstream:
> "uwsgi://unix:/tmp/uwsgi.sock:" .....
> включил дебаг, вроде все солидно отдает, и сразу же печатает эту ошибку
>
> 2012/03/09 14:52:47 [debug] 15114#0: epoll: fd:19 ev:0005 d:00007F7E4D178311
> 2012/03/09 14:52:47 [debug] 15114#0: *2 http upstream request:
> "/uwsgi/last.py?"
> 2012/03/09 14:52:47 [debug] 15114#0: *2 http upstream process header
> 2012/03/09 14:52:47 [debug] 15114#0: *2 malloc: 0000000001437550:4096
> 2012/03/09 14:52:47 [debug] 15114#0: *2 recv: fd:19 45 of 4096
> 2012/03/09 14:52:47 [debug] 15114#0: *2 http uwsgi status 200 "200 OK"
> 2012/03/09 14:52:47 [debug] 15114#0: *2 http uwsgi header:
> "Content-Type: text/plain"
> 2012/03/09 14:52:47 [debug] 15114#0: *2 http uwsgi header done
> 2012/03/09 14:52:47 [error] 15114#0: *2 upstream sent neither valid
> HTTP/1.0 header nor "Status" header line while reading response
> header from upstream
>
> last.py упростил до:
> def last_handler(environ, start_response):
> start_response('200 OK', [('Content-Type', 'text/plain')])
Это баг в модуле wsgi, он неправильно работает с запросами. Нужно
взять вот эти коммиты в scgi и проделать то же c uwsgi:
http://trac.nginx.org/nginx/changeset/4372/nginx
http://trac.nginx.org/nginx/changeset/4374/nginx
Что-то я как-то не посмотрел, что в uwsgi те же проблемы...
Maxim Dounin
Подробная информация о списке рассылки nginx-ru