[Twisted-web] asynchronous WSGI implementation
exarkun at twistedmatrix.com
exarkun at twistedmatrix.com
Fri Apr 9 08:59:50 EDT 2010
On 10:32 am, manlio_perillo at libero.it wrote:
>Hi.
>
>I have started to write an asynchronous WSGI implementation for
>Twisted Web.
>
>The code is available from a Mercurial repository:
>http://hg.mperillo.ath.cx/twisted/twsgi/
>
>The WSGI application is executed in the main Twisted thread, and the
>application will be able to directly use Twisted features.
>
>The reason I'm doing this is because I have written a WSGI
>implementation for Nginx:
>http://hg.mperillo.ath.cx/nginx/ngx_http_wsgi_module
>
>and I would like to have a *similar* implementation written in pure
>Python, for testing purpose.
>
>
>I have some questions:
>
>* What's the use of
>
> __metaclass__ = type
>
> in twisted.web.wsgi ?
This makes all classes without a base class defined in the module new-
style.
>* Is request.content always buffered (in memory or temporary file)?
It's always buffered, in memory if it is small, in a temporary file if
it is large (same rules as for a normal request in Twisted Web). Once
#288 is resolved, it will probably make sense to stream the request body
instead.
>* In my ngx_http_wsgi_module, when the yielded string can not be sent
>to
> the client (because OS buffer is full), I suspend the execution of the
> application, and resume it when the socket is ready.
>
> I want to do the same with Twisted, and the way to go is to be a
> push producer.
>
> However I don't know how to implement and use the IPushProducer
> interface for _WSGIResponse.
The request object has a register producer method. What else are you
having trouble with?
>
>By the way: it seems that the WSGI implementation in Twisted Web has
>some bugs:
>
>* close method of the application iterator is not called in case of
> errors
This looks like a bug that should be fixed.
>* _sendResponseHeaders does not check if start_response has been called
What are the practical consequences of this?
Jean-Paul
More information about the Twisted-web
mailing list