I moved away from Tornado recently; I was quickly getting lost in callback hell. This was at least partially due to using libraries which did not support Tornado's method of async io natively, and a lot more fear that even putting these outputs in threads would still cause delays we could not afford.
I moved this project to Go, though I've quickly run into quirks there as well.
I'm in the same boat, but there do seem to be alternatives which are popping up. The problem is that there is a big difference between the Twisted way of doing things (deferreds), and everything else. Once you start writing code in a twisted way it's hard to port it to anything else.
It's either that or writing some blocking code or something. No thanks.