I've been working on some projects for the lab that involve remotely controlling hardware to perform various tasks. Since the hardware in question is shared between different experiments, some sort of asynchronous solution is needed, and a web-based client coupled with websockets seemed to be the best bet (this also leaves the option open in the future to write a standalone client that is not browser-based if desired).
- Very thorough and easy to read documentation, including "snippets" with helpful tips and a very helpful community.
- Extreme ease of use for both small and large projects.
- Great use of decorators to further ease development.
- A large number of extensions to build up a complex project without requiring overhead for simple projects.
This is not to say that the other options are bad, but having looked at all of them, Flask suits me best. The one problem: only Tornado directly supports websockets since it is both an HTTP server and a web framework in one, whereas the others utilize WSGI for deployment.
Luckily, it is possible to leverage both the excellent asynchronous
features of Tornado and the power and ease of use of Flask through
Tornado's ability to serve WSGI apps with
tornado.wsgi.WSGIContainer. The Flask documentation shows a very
on how to do just that.
Integrating …more ...