"...from little towns with strange names like Smegma, Spasmodic, Frog, and the far-flung Isles of Langerhans".
Someone on SourceForge has a project that includes the name 'spasmodic' so I'm using the name spasmoidal. But this code will always be spasmodic to me.
Asynchronous I/O (and other tasks) proceeding in fits and spasms The SpasmodicEngine selects tasks (spasmoids) from a (heapqueue based) priority queue. The tasks are Python 2.5 extended generators (some call them coroutines: PEP 342). The engine calls task.send() with an appropriate argument. One of the library of tasks is Pollster. Pollster calls poll() with for tasks that are waiting I/O. Tasks that are ready for I/O are fed to the priority queue.
Spasmodic provides an efficient way to manage a large number of sockets and/or files. Other processing works well too, if it can be subdivided into brief spasms.
Doug Fort, Consulting Programmer http://www.dougfort.com