Could WSGI handle Asynchronous response?
Jean-Paul Calderone
exarkun at divmod.com
Mon Feb 18 09:35:29 EST 2008
On Mon, 18 Feb 2008 05:27:41 -0800 (PST), est <electronixtar at gmail.com> wrote:
>On Feb 18, 7:05 pm, est <electronix... at gmail.com> 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 ?
>
>figured out myself :blush: :blush:
>
>def demo_app(environ,start_response):
> from StringIO import StringIO
> stdout = StringIO()
> print >>stdout, "Hello world!"
> print >>stdout
> h = environ.items(); h.sort()
> for k,v in h:
> print >>stdout, k,'=',`v`
> k=start_response("200 OK", [('Content-Type','text/plain')])
> for x in range(1, 100):
> k(str(x))
> time.sleep(1)
> return [stdout.getvalue()]
You can do this, but notice that you use up a thread (or a process) for
each client by doing so. This means you'll be limited to a fairly small
number of concurrent clients.
Jean-Paul
More information about the Python-list
mailing list