首先,tornado是异步框架,flask和django都是同步框架,处理请求时性能会有所限制。
django框架的特性是大而全,相当于flask而言更适合企业级网站开发,功能全面,自带ORM和模板引擎,稳定且开发效率高;flask相对而言就是小而精,他没有默认关联的数据库,可以自己选择数据库,mysql或者nosql都可以;tornado的话因为他本身的异步性质,所以他的性能会比较高,非阻塞式服务器,速度非常快,一般建议在Unix/Linux平台运行使用。
据网上博主测试分享,json序列化本地测试的情况而言,django完成一次json序列化平均时间最快,其次是flask,最后是tornado;而在处理远程HTTP请求的情况下,tornado的表现优于flask和django。
综合而言,远程http请求+json序列化测试表现最优的是tornado,得益于他自身携带的异步特性;其次是flask,排在最后的是django。
那么事实上,我们在实际使用的场景中,一般都是选择django/flask+celery+redis/memchaned/rabbitMQ组合使用来提高性能。
Django ORM比较慢,但是他的许多性能又依赖于此,Flask的ORM是SQLAlchemy,相较于MySQLdb耗时多了5%左右,是性能比较好的一个ORM,Tornado与Flask速度不相上下
最后总结,相对来说django是更全能一些,他的可维护性和开发速度非常优秀,缺点是比较慢,但是同步特性导致吞吐量小的问题可以通过celery等来解决掉;tornado有一个天生异步的有益条件,性能较为强悍,但是比较原始,许多内容都需要自己去处理,不如django的功能全面好用;flask是一个典型的微框架代表,比较灵活,一般是可以自己选择数据库交互组件的(通常情况选择的是Flask-SQLAlchemy),而且加上celery+redis等异步特性后,与tornado性能不相上下。