<html><body><div style="color:#000; background-color:#fff; font-family:times new roman, new york, times, serif;font-size:12pt"><div><span>Looks like that solved it!  Thanks Igor!</span></div><div><br></div><div style="font-size: 12pt; font-family: 'times new roman', 'new york', times, serif; "><div style="font-size: 12pt; font-family: 'times new roman', 'new york', times, serif; "><font size="2" face="Arial"><hr size="1"><b><span style="font-weight:bold;">From:</span></b> Igor Sysoev <igor@sysoev.ru><br><b><span style="font-weight: bold;">To:</span></b> nginx@nginx.org<br><b><span style="font-weight: bold;">Sent:</span></b> Thursday, November 3, 2011 12:12 AM<br><b><span style="font-weight: bold;">Subject:</span></b> Re: python wsgi behind nginx:  yield not behaving as expected<br></font><br>On Thu, Nov 03, 2011 at 12:08:49AM -0700, Matt Starcrest wrote:<br>> Hi,<br>> I want to run wsgi python code on a web server behind nginx.  The
 server needs to respond quickly to an http request, then continue to do some (slow) work after responding.  Python's yield statement seems to fit the bill, as follows:<br>> <br>> def application(environ, start_response):<br>>     output = get_response_quickly(environ)<br>> <br>>     start_response('200 OK', [('Content-type', 'text/plain'), ('Content-Length', str(len(output)))])<br>> <br>>     yield output<br>>     do_slow_work()<br>> <br>> If I run this wsgi in a standalone python server (I tried wsgiref, fapws, uwsgi), the caller receives the output immediately (after get_response_quickly()), as desired.  Great.  However, if I run any of these servers behind nginx, the caller doesn't receive a response until *after* do_slow_work() -- thus defeating the purpose.<br>> <br>> Is there a way to make this pattern work with nginx?  Or is there a better
 way in general to respond quickly but continue work, without manually creating python threads / other clumsiness?<br><br>In nginx-1.0.9 or nginx-1.1.5 you can try<br>   uwsgi_buffering  off;<br>or <br>   sgi_buffering  off;<br>depending on protocol. In any modern enough nginx version you can use<br>    proxy_buffering off;<br><br>There is no way currently to disable buffering of FastCGI servers.<br><br><br>-- <br>Igor Sysoev<br><br>_______________________________________________<br>nginx mailing list<br><a ymailto="mailto:nginx@nginx.org" href="mailto:nginx@nginx.org">nginx@nginx.org</a><br><a href="http://mailman.nginx.org/mailman/listinfo/nginx" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx</a><br><br></div></div></div></body></html>