On Wed, 05 Apr 2006 14:39:36 -0500, Ian Bicking firstname.lastname@example.org wrote:
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).
There is plenty of consensus on how to do asynchronous programming with Python: use Twisted ;-).
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:
Taking this approach restricts your deployment to be web-only, which eliminates a substantial advantage of Twisted. It isn't hard to implement, though:
from twisted.web2 import server, wsgi from twisted.web2.channel import http from twisted.internet import reactor
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 """
factory = http.HTTPFactory(server.Site(wsgi.WSGIResource(app))) for hostportpair in hosts: host, portstr = hostportpair.split(':') port = int(portstr) reactor.listenTCP(port, factory, interface=host) reactor.run()
This is completely untested, but it should at least get you going in the right direction.