Non-blocking servers are the best choice if all your libraries provide non-blocking apis. As already mentioned in your second question, if the library is blocking (for example, the lib database makes a blocking call), all processes / threads are blocked and the system freezes. Not all available libraries are asynchronous, which makes it difficult to use a tornado / eventlet for all use cases. Also, in a multi-core box, you need to run several instances of non-blocking servers in order to fully use the box capacity.
Tornado/Event java nio. Tornado Eventlet. Tornado , - (IO) . , . , , , , . Java NIO .
Eventlet , . . IO , eventlet ( ).
Apache webapps , -
-, , . async-, twisted/event/Java NIO.