This is cool... I started something very similar to this 6 months ago.<p>I took the Tornado event loop (rather than depending all of Tornado) and made it work with pipes, signals, and child processes (SIGCHLD mainly).<p>I based it on the Node.js API. Node has the stream1.pipe(stream2) API which is very nice. And I think node has a tee() as well.<p>Teena's API looks different at first glance -- I'll test it out and see what the advantages are.<p>I wrote this since I have a server that it starting a lot of child processes and the only way to properly manage timeouts and unexpected child deaths is with an event loop.<p>I didn't connect it to the server yet but I used it in another project which is like a better xargs -P (and better than GNU parallel). I'll put the code up at some point.
Note from the author: this is still a work in progress, but I wanted to demonstrate that Tornado (and async I/O in general) is useful for more than just network servers.