flask
Flask是由python實現的一個web微框架,讓我們可以使用Python語言快速實現一個網站或Web服務
-
Flask 是輕量級的框架,自由,靈活,可擴展性強,核心基於Werkzeug WSGI工具 和jinja2 模板引擎
-
適用於做小網站以及web服務的API,開發大型網站無壓力,但架構需要自己設計
-
與關系型數據庫的結合不弱於Django,而與非關系型數據庫的結合遠遠優於Django
django
Python下有許多款不同的 Web 框架。Django是重量級選手中最有代表性的一位。許多成功的網站和APP都基於Django
-
Django走的大而全的方向,開發效率高。它的MTV框架,自帶的ORM,admin后台管理,自帶的sqlite數據庫和開發測試用的服務器,給開發者提高了超高的開發效率。 重量級web框架,功能齊全,提供一站式解決的思路,能讓開發者不用在選擇上花費大量時間。
-
自帶ORM和模板引擎,支持jinja等非官方模板引擎。
-
自帶ORM使Django和關系型數據庫耦合度高,如果要使用非關系型數據庫,需要使用第三方庫
-
自帶數據庫管理app
-
成熟,穩定,開發效率高,相對於Flask,Django的整體封閉性比較好,適合做企業級網站的開發。python web框架的先驅,第三方庫豐富
tornado
Tornado就是我們在 FriendFeed 的 Web 服務器及其常用工具的開源版本。Tornado 和現在的主流 Web 服務器框架(包括大多數 Python 的框架)有着明顯的區別:它是非阻塞式服務器,而且速度相當快。得利於其 非阻塞的方式和對epoll的運用,Tornado 每秒可以處理數以千計的連接,因此 Tornado 是實時 Web 服務的一個 理想框架。我們開發這個 Web 服務器的主要目的就是為了處理 FriendFeed 的實時功能 ——在 FriendFeed 的應用里每一個活動用戶都會保持着一個服務器連接。(關於如何擴容 服務器,以處理數以千計的客戶端的連接的問題,請參閱The C10K problem)
-
Flask 是輕量級的框架,自由,靈活,可擴展性強,核心基於Werkzeug WSGI工具 和jinja2 模板引擎
-
適用於做小網站以及web服務的API,開發大型網站無壓力,但架構需要自己設計
-
與關系型數據庫的結合不弱於Django,而與非關系型數據庫的結合遠遠優於Django
- Tornado 可以承載成千上萬的活動連接, 完美的實現了 長連接, WebSockets, 和其他對於每一位用戶來說需要長連接的程序
sanic
Sanic 既是一個Python web 服務器,又是一個web框架,它為速度而生。Sanic只支持Python 3.5及其以上版本,允許我們使用async/await
語法來使我們的代碼非阻塞且快速
Python中各自的應用場景?
Django: 主要是用來搞快速開發的,他的亮點就是快速開發,節約成本,,如果要實現高並發的話,就要對django進行二次開發,比如把整個笨重的框架給拆掉自己寫socket實現http的通信,底層用純c,c++寫提升效率,ORM框架給干掉,自己編寫封裝與數據庫交互的框架,ORM雖然面向對象來操作數據庫,但是它的效率很低,使用外鍵來聯系表與表之間的查詢;
Flask: 輕量級,主要是用來寫接口的一個框架,實現前后端分離,提考開發效率,Flask本身相當於一個內核,其他幾乎所有的功能都要用到擴展(郵件擴展Flask-Mail,用戶認證Flask-Login),都需要用第三方的擴展來實現。比如可以用Flask-extension加入ORM、文件上傳、身份驗證等。Flask沒有默認使用的數據庫,你可以選擇MySQL,也可以用NoSQL。
其WSGI工具箱用Werkzeug(路由模塊),模板引擎則使用Jinja2,這兩個也是Flask框架的核心。
Tornado: Tornado是一種Web服務器軟件的開源版本。Tornado和現在的主流Web服務器框架(包括大多數Python的框架)有着明顯的區別:它是非阻塞式服務器,而且速度相當快。得利於其非阻塞的方式和對epoll的運用,Tornado每秒可以處理數以千計的連接因此Tornado是實時Web服務的一個理想框架