I liked the concurrence Python module which relies on either Stackless Python microthreads or Greenlets for light-weight threading. All blocking network I/O is transparently made asynchronous through a single libevent
loop, so it should be nearly as efficient as an real asynchronous server.
I suppose it's similar to Eventlet in this way.
The downside is that its API is quite different from Python's sockets
/threading
modules; you need to rewrite a fair bit of your application (or write a compatibility shim layer)
Edit: It seems that there's also cogen, which is similar, but uses Python 2.5's enhanced generators for its coroutines, instead of Greenlets. This makes it more portable than concurrence and other alternatives. Network I/O is done directly with epoll/kqueue/iocp.