[Twisted-web] Twisted and WSGI...
Ian Bicking
ianb at colorstudy.com
Wed Apr 5 14:39:36 CDT 2006
Jim Fulton wrote:
>> As WSGI is going into python 2.5, I was wondering what the general
>> consensus is among twisted web devs about it? Does the WSGI model map
>> well into twisted's asynchronous model?
>
>
> Not as well as it should IMO. There seems to be some disdain
> for asynchronous servers on the WSGI list. I tried to
> advocate on the WSGI list for better support for asynchronous
> servers, especially wrt threading issues.
I think "disdain" is too strong. There's a lack of any complete
proposal which would work, especially one that doesn't have Deferred or
other particular bits of code as a prerequesite. There was discussion a
long time ago, but it drifted off. More generally, there's no larger
consensus on how to do asynchronous programming in Python, though
there's obvious consensus on how to do synchronous programming (that is:
with functions).
I remember some discussion about allowing an asynchronous application to
return '' in the WSGI app response iterator, which would signify a
yield, but I'm not sure where any ready signal would go.
>> Say I have a WSGI
>> app and I want to port it to twisted. How easy is that? (I know
>> there is a twisted wsgi module)
>
>
> Trivial.
Which reminds me -- I started doing this in Paste, but got bogged down
in all the setup and imports I didn't understand, and then subscribed
here and never followed up. Can someone provide an example of a simple
function that would look like:
def serve_with_twisted(hosts, wsgi_app, **kw):
"""Serve wsgi_app indefinitely
hosts is a list of 'address:port', and wsgi_app is a
WSGI application. **kw is... whatever other interesting things
you might want to use to configure a Twisted server
"""
Then I can lightly wrap that and people could use Twisted with their
Paste configuration files.
>> Do I just need to wrap some logic in deferreds?
>
>
> No. You don't have to do any twisted programming at all to use the
> web server via WSGI.
>
> IMO, to get the full scalability benefits you want, you may
> need to address some threading issues. You might look at the
> Zope 3 integration, which isn't as clean as it ought to me.
Is this related to the threadpool, or are you using backdoors to the
underlying Twisted server to do some things in an asynchronous manner?
--
Ian Bicking / ianb at colorstudy.com / http://blog.ianbicking.org
More information about the Twisted-web
mailing list