Medusa was used in some significant projects - it provided the web server for the fledgling google.stanford.edu, and I believe was used for a while in their web crawler.
It also provided the web server for Zope.
At eGroups, I wrote an outbound SMTP engine ('Newman') that for 10+ years Yahoo used to send more email than any other entity on the Internet. I believe they may actually still be using it (circa 2015). If you see 'NNFMP' in the headers of an email sent via Yahoo, that's the "Newman No-Frills Mail Protocol".
Around 1999/2000 I started moving away from pure event-driven systems to coroutine-based user threading systems. This eventually led to shrapnel, which is what I use today.
In Jun 2002 Andrew Kuchling kindly took up the maintenance of medusa. He has an updated release available via sourceforge.
Since the eGroups mailing list has become completely swamped in spam, the mailing list is moving to python.org
Medusa is an architecture for building long-running, high-performance network servers in Python.
Medusa is in use now in several mission-critical applications, ranging from custom web servers at extremely high-traffic sites to distributed data processing systems.
It is an elegant and efficient solution to a difficult
programming problem. Medusa's core async-socket library is very
stable; it has been in use virtually unchanged since 1995. [It's also part
of the Python Library as of Python-1.5.2, see
The latest release of Medusa is available:
asyncore.poll()in C by Andy Dustman.
The latest version of
asyncore.py includes support for this module.
poll(2) is much like select(2), but uses an array of structures rather than a
bitmap. A major design problem with select(2) is that an
usually of a fixed maximum size, on many operating systems the kernel needs to rebuilt to
raise this limit; even on those that have dynamically adjustable limits, you still
need to recompile your application (because
FD_SETSIZE is a macro).