Brett Taylor discusses this issue in his tech talk on Tornado (http://bret.appspot.com/entry/tornado-tech-talk). He uses a hybrid approach: Use synchronous programming when requests block for a short time (fetching data from local db or memcache) and async programming when something blocks for a long time (calling out to third party services, long polling requests).
He does not go all async because programming with callbacks or deferreds is more complicated than straight line synchronous programming.
Brett also mentions that the instances of the server are created once and reused. He does not fork an instance of the server per request.