David Reid ha scritto:
On Mar 6, 2008, at 2:00 AM, Manlio Perillo wrote:
Maybe it can be of interest my work on adding asynchronous support in
WSGI.
I'm developing a WSGI module for the Nginx web server:
http://hg.mperillo.ath.cx/nginx/mod_wsgi/
The great advantage of Nginx over Twisted is it's support for multiple
worker processes; this helps a lot with application "reloading" and
for better support of I/O bound applications.
I'm not quite convinced that the concurrency model of the container is
the real bottleneck in WSGI applications as opposed to it's synchronous
API.
A Twisted WSGI container could use a process pool just as easily as a
thread pool, but you're still taking a properly asynchronous container
and letting it run an application that will block for a long period of
time.
I'm speaking about the support to asynchronous WSGI applications.
I now that most of the current applications are synchronous, but I'm
speaking about asynchronous application and the best way to support them
with WSGI.
I think that having a "pure" asynchronous WSGI implementation in
Twisted Web that implements this extension can be a good starting
point for trying to standardize asynchronous web applications.
P.S.: the wsgi.pause_output extension, proposed some years ago here by
Donovan Preston should be very easy to implement using ngx.poll, and a
pipe.
Does anyone support said extension?
No, I just invented it 2 days ago :).
Does everyone support the same
pause_output?
No.
Or just functions of the same name?
?
It shouldn't be very hard to add support for it to Twisted.web2's WSGI
implementation either,
No, it's not easy.
In Twisted Web2 WSGI implementation the application runs in a separate
thread.
The poll extension requires the registration of a file descriptor in the
reactor, but this must be done in the main thread, since Twisted is not
thread safe.
but I don't much see the point if no one else
supports it.
Well, if Twisted implements it, then we have two interoperable
implementations.
There are not so many asynchronous web servers.
I'm not convinced that WSGI is at all a useful means of
writing asynchronous web applications.
I don't think so.
Instead, it is possible to write asynchronous applications using a very
convenient API.
I think WSGI's only benefit is
that it allows you to almost write your application code once and run it
on multiple containers.
Right, and I would like the same to be possible with asynchronous
applications.
I, by default, will use Nginx but I want to have the possibility to
switch to Twisted when I need to use some of the protocols already
implemented in it.
-David
Manlio Perillo
_______________________________________________
Twisted-web mailing list
[email protected]
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-web