python框架(flask/django/tornado)比较

时间:2023-11-12 09:05:50

一、对外数据接口

三者作为web框架,都是通过url映射对外的接口

flask:以decorator的形式,映射到函数中

django:以字典形式,映射到函数

tornado: 以字典形式,映射到类中

flask的接口散落在整个app文件中,多了的话,稍微不易于管理;django单独集中在url.py文件中,挺好。

对于接口简单(如cms系统),映射到函数,简单明了;对于复杂的接口(富应用的web app),映射到类,更适合面向对象编程。

二、可扩展性

flask:作为微型框架,它可以*组配外部功能模块,如orm、template机制等

django:作为大而全框架,它几乎不可能组配其他外部功能模块,但是可以增加丰富它的Middlerware/contrib等

tornado:接近flask

三、代码层次结构

作为framwork,三者的架构基本都是一个callable的App类为核心,

django对使用者,呈现的是mvc结构。比较符合现在的主流。当然flask/tornado都容易做到mvc,只是额外增加工作量。

四、开发效率

flask:由于它协助完成功能很少,除非是小型应用,否则它开发效率比较大

django:大而全的框架,完成了session/orm/等。如果考虑安全性在内,对于一般网站,它的开发效率是非常高的。

tornado:介于flask、django之间。由于没有session机制,所以开发效率也不低。但它原生实现了websocket,所以对于开发需要很多长连接的web应用,会比较快。

五、并发能力

flask:内容很少,对于大应用,性能如何,很大程度看后面人员如何扩展

django:由于代码量大,而且又是同步的,所以抗压能力很弱

tornado:异步框架,性能相对好

实际上,生产时候,都是把framework通过nginx/gevent部署,而tornado对于前面二者来说,并发性能也没有优势。

总体而言:

flask适合用于小型应用开发;如果开发团队能力强,也可以用来做大中型应用

django适合应用用于访问量不大的大中型应用

tornado适合用于开发长连接多的web应用。比如股票信息推送、网络聊天等。

参考:http://www.pythonfan.org/thread-5578-1-1.html