At 04:23 AM 2/18/2008 -0800, est wrote:
I am writing a small 'comet'-like app using flup, something like this:def myapp(environ, start_response): start_response('200 OK', [('Content-Type', 'text/plain')]) return ['Flup works!\n'] <-------------Could this be part of response output? Could I time.sleep() for a while then write other outputs? if __name__ == '__main__': from flup.server.fcgi import WSGIServer WSGIServer(myapp, multiplexed=True, bindAddress=('0.0.0.0', 8888)).run() So is WSGI really synchronous? How can I handle asynchronous outputs with flup/WSGI ?
You are confusing "asynchronous" with "streaming". WSGI is synchronous, but allows streaming and "server push". Instead of returning a sequence, code your application as an iterator that yields output chunks.
It is "synchronous" in the sense that if you sleep or do processing in between yielded output chunks, you will prevent the server from freeing any resources associated with your application, or from doing any other work in the current thread. A properly-designed WSGI server should continue to function, as long as all available resources aren't consumed... which in the case of "push" apps could easily make your box fall over, regardless of whether WSGI is involved. :)
_______________________________________________ Web-SIG mailing list [email protected] Web SIG: http://www.python.org/sigs/web-sig Unsubscribe: http://mail.python.org/mailman/options/web-sig/archive%40mail-archive.com
