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