|
I've been using Tornado for about a year now, and I'm incredibly happy with it. Here is some of the background and reasons for that: * I had been using Django for some 5-6 years, until I finally realised that I'm not happy with many of its architectural decisions -- global singleton settings, the way views are organized, the way it's organised around the ORM and everything. It provides a lot of tools, but if you don't need some of them them tough luck, you still get to lug them around and it's not helping you find any workarounds. * I've learned to prefer frameworks that don't get in your way and allow you to choose any individual components for individual needs. I've worked with Flask and Bottle, which are great but sometimes go too far in the opposite direction, focusing so much on simplicity that more complex tasks require jumping through a different set of loops (I'm looking at you, Blueprints). * Tornado's Web framework is successfully avoiding both types of traps, and it gives you the ability to develop simple apps -- say, a REST API -- quite easily and naturally, at the same time giving you the room to grow your creation naturally as needed. I've briefly tried Falcon, which follows a similar philosophy, and is IMO a great alternative. * Tornado, however, is not just a Web framework -- it actually provides an amazing set of tools which can be easily in your app or even without any relation to a Web app. And the best part of the toolset is its asynchronous networking capabilities, which provided things like coroutines long before they existed in Python -- and now you can combine the two in a same app. * Last but not least, Tornado provides an amazing, production-ready, non-blocking HTTP server. Most of the other frameworks make a point of not using their built-in servers in production, instead advising you to plug your app into a WSGI server like uWSGI or gunicorn; you can do that with Tornado too, but if you don't your app can process requests asynchronously, preventing slower requests from blocking faster ones. |