1. 程式人生 > >淺談Python Web 框架:Django, Twisted, Tornado, Flask, Cyclone 和 Pyramid

淺談Python Web 框架:Django, Twisted, Tornado, Flask, Cyclone 和 Pyramid

地方 def jinja follow 技術選擇 trac oschina pyramid dash

  • Django

Django 是一個高級的 Python Web 框架,支持快速開發,簡潔、實用的設計。如果你正在建一個和電子商務網站相似的應用,那你應該選擇用 Django 框架。它能使你快速完成工作,也不必擔心太多的技術選擇。它能提供從模版引擎到 ORM 所需的一切東西。用 Django 構建你的app 的時候,你必須要遵循 Django 的方式,這點像極了 Ruby on Rails 的 Rails 框架。有些人會覺得這樣有點不爽,但在我看來這是極好的,畢竟我堅信:“約定優於機制”。相對於所有其他的庫,Django 框架有最強的社區,這意味著可以輕松獲得幫助。

  • Flask

Flask 是基於 Werkzeug,Jinja 2 的 Python 輕量級框架(microframework)。註意——“microframework” 裏的 “micro” 可能會產生誤解。輕量級不意味著 Flask 是一個不成熟、不靠譜的庫。它表示 Flask 的核心就是非常非常簡單的。不像 Django 框架,它不會給你帶來技術選擇上的問題,你可以自由選擇你喜歡的任何模版引擎或 ORM。即使它默認配備了 Jinja 模板引擎,你也隨時可以自由選擇。 在我看來,用 Flask 來編寫 API 服務(RESTful rervices)是再好不過的。

  • Twisted

Twisted 是用 Python 實現的基於事件驅動的網絡引擎框架。它是一個高性能的引擎,其快速的主要原因是一個被稱為 deferred 的 object,Twisted 是建立在 deferred object 之上。對於不了解 deferred object 的人來說,deferred object 是通過異步架構實現的機制。Twisted 是很快速的,但是不適合編寫常規的 WebApps。如果你想做一些底層網絡的東西,Twisted 是你的好幫手。

  • Tornado

Tornado 是一個 Python Web 框架和異步網絡庫,最初是由 FriendFeed 開發的。Tornado 采用非阻塞網絡 I / O 模型,可以處理數以千計的網絡連接,這意味著對於 long polling 、WebSockets 和其他需要長時間實時連接的 apps 來說,Tornado 是一個理想的 Web 框架。Tornado 介於 Django 和 Flask 之間。如果你想要用 Django 或 Flask 寫一些東西,但你想要一個更好的性能,你應該選擇用 Tornado 框架。配合上合理的架構,它能很好的處理 C10K 問題。

  • Cyclone

Cyclone 是用 Python 編寫的一款異步非阻塞的輕量級 Web Server 框架。它實現了 Tornado 的 API,底層實現是基於 Twisted Protocol 的。現在,如果你想要 Twisted 的性能和易於編寫常規的 webapps,那麽請選擇 Cyclone。相對於 Tornado 框架,我更喜歡 Cyclone。它有一個非常類似於 Tornado 的 API,實際上,它是 Tornado 的一個 fork 分支。但是問題就是它擁有的社區相對較小。Alexandre Fiori 是主要代碼貢獻者。

  • Pyramid

Pyramid 是一個通用的,開源的 Python web 應用開發框架。其主要目標就是讓 Python 開發人員更輕松的開發 web 應用程序。我沒有用過 Pyramid 框架,但是我看過它的文檔。據我了解,Pyramind 和 Flask 很相似,我認為可以用 Flask 框架的地方也可以用 Pyramid 框架,反之亦然。

原文地址:dhilipsiva

淺談Python Web 框架:Django, Twisted, Tornado, Flask, Cyclone 和 Pyramid