![Django/Flask/Tornado三大Python web框架性能分析](http://p2.ttnews.xyz/loading.gif)
一、Django
主要特點是大而全,集成了很多組件,例如: Models Admin Form 等等, 不管你用得到用不到,反正它全都有,屬於全能型框架
優點:
Django太重了,除了web框架,自帶ORM和模板引擎,靈活和自由度不夠高
Django能開發小應用,但總會有“殺雞焉用牛刀”的感覺
Django的自帶ORM非常優秀,綜合評價略高於SQLAlchemy
Django自帶的模板引擎簡單好用,但其強大程度和綜合評價略低於Jinja
Django自帶ORM也使Django與關係型數據庫耦合度過高,如果想使用MongoDB等NoSQL數據,需要選取合適的第三方庫,且總感覺Django+SQL才是天生一對的搭配,Django+NoSQL砍掉了Django的半壁江山
Django目前支持Jinja等非官方模板引擎
Django自帶的數據庫管理app好評如潮
Django非常適合企業級網站的開發:快速、靠譜、穩定
Django成熟、穩定、完善,但相比於Flask,Django的整體生態相對封閉
Django是Python web框架的先驅,用戶多,第三方庫最豐富,最好的Python庫,如果不能直接用到Django中,也一定能找到與之對應的移植
Django上手也比較容易,開發文檔詳細、完善,相關資料豐富
缺點:
template不怎麼好用(來自自身的缺點)
數據庫用nosql不方便(來自自身的缺點)
如果功能不多,容易臃腫
![Django/Flask/Tornado三大Python web框架性能分析](http://p2.ttnews.xyz/loading.gif)
二、Torando
主要特點是原生異步非阻塞,在IO密集型應用和多任務處理上佔據絕對性的優勢,屬於專注型框架
優點:
少而精(輕量級框架)
注重性能優越,速度快
解決高併發(請求處理是基於回調的非阻塞調用)
異步非阻塞
websockets 長連接
內嵌了HTTP服務器
單線程的異步網絡程序,默認啟動時根據CPU數量運行多個實例;利用CPU多核的優勢
自定義模塊
缺點:
模板和數據庫部分有很多第三方的模塊可供選擇,這樣不利於封裝為一個功能模塊
三、Flask
主要特點小而輕,原生組件幾乎為0, 三方提供的組件請參考Django 非常全面,屬於短小精悍型框架
優點:
Flask確實很“輕”,不愧是Micro Framework,從Django轉向Flask的開發者一定會如此感慨,除非二者均為深入使用過
Flask自由、靈活,可擴展性強,第三方庫的選擇面廣,開發時可以結合自己最喜歡用的輪子,也能結合最流行最強大的Python庫
入門簡單,即便沒有多少web開發經驗,也能很快做出網站
非常適用於小型網站
非常適用於開發web服務的API
開發大型網站無壓力,但代碼架構需要自己設計,開發成本取決於開發者的能力和經驗
各方面性能均等於或優於Django
Django自帶的或第三方的好評如潮的功能,Flask上總會找到與之類似第三方庫
Flask靈活開發,Python高手基本都會喜歡Flask,但對Django卻可能褒貶不一
Flask與關係型數據庫的配合使用不弱於Django,而其與NoSQL數據庫的配合遠遠優於Django
Flask比Django更加Pythonic,與Python的philosophy更加吻合
缺點:
對於大型網站開發,需要設計路由映射的規則,否則導致代碼混亂
閱讀更多 扣丁學堂 的文章