一、Django: Python Web應用開發框架
Django是一個開放原始碼的Web應用框架,由Python寫成。採用了MVC的軟體設計模式,即模型M,檢視V和控制器C。它最初是被開發來用於管理勞倫斯出版集團旗下的一些以新聞內容為主的網站的,
即是CMS(內容管理系統)軟體。並於2005年7月在BSD許可證下發布。這套框架是以比利時的吉普賽爵士吉他手Django Reinhardt來命名的。
Django 應該是最出名的Python框架,GAE甚至Erlang都有框架受它影響。Django是走大而全的方向,它最出名的是其全自動化的管理後臺:只需要使用起ORM,做簡單的物件定義,它就能自動生成資料庫結構、以及全功能的管理後臺。
Django提供的方便,也意味著Django內建的ORM跟框架內的其他模組耦合程度高。應用程式必須使用Django內建的ORM,否則就不能享受到框架內提供的種種基於其ORM的便利;理論上可以切換掉其ORM模組,
但這就相當於要把裝修完畢的房子拆除重新裝修,倒不如一開始就去毛胚房做全新的裝修。Django的賣點是超高的開發效率,其效能擴充套件有限;採用Django的專案,在流量達到一定規模後,都需要對其進行重構,才能滿足效能的要求。
二、Diesel:基於Greenlet的事件I/O框架
Diesel提供一個整潔的API來編寫網路客戶端和伺服器。支援TCP和UDP。
你應該使用diesel來編寫你的下一個網路應用。得益於Python使得diesel語法非常整潔,發展步伐非常迅速。非阻塞I/O使得diesel非常快速並且容易擴充套件。greenlets使得diesel有了unwind(to(callbacks(no)))。
nose使得測試變得容易。最後,Flask使得你不需要寫一個新的網路框架來使用diesel。
三、Flask:一個用Python編寫的輕量級Web應用框架
Flask是一個使用Python編寫的輕量級Web應用框架。基於Werkzeug WSGI工具箱和Jinja2 模板引擎。 Flask使用BSD授權。 Flask也被稱為“microframework”,因為它使用簡單的核心,用extension增加其他功能。
Flask沒有預設使用的資料庫、窗體驗證工具。然而,Flask保留了擴增的彈性,可以用Flask-extension加入這些功能:ORM、窗體驗證工具、檔案上傳、各種開放式身份驗證技術。
Flask 很有趣
配置簡單
特性
1、內建開發用伺服器和debugger
2、整合單元測試(unit testing)
3、RESTful request dispatching
4、使用Jinja2模板引擎
5、支援secure cookies(client side sessions)
6、100% WSGI 1.0相容
7、Unicode based
8、詳細的檔案、教學
9、Google App Engine相容
10、可用Extensions增加其他功能
四、Cubes:輕量級Python OLAP框架
Cubes是一個輕量級Python框架,包含OLAP、多維資料分析和瀏覽聚合資料(aggregated data)等工具
Cubes的主要特性之一是它的邏輯模型,抽象物理資料並提供給終端使用者層。
五、Kartograph.py:創造向量地圖的輕量級Python框架
Kartograph是一個Python庫,用來為ESRI生成SVG地圖。Kartograph.py目前仍處於beta階段,你可以在virtualenv環境下來測試。
六、Pulsar:Python的事件驅動併發框架
Pulsar是一個事件驅動的併發框架,有了pulsar,你可以寫出在不同程式或執行緒中執行一個或多個活動的非同步伺服器。
應用
附帶以下功能
1、Socket伺服器
2、WSGI伺服器
3、JSON-RPC
4、Web Sockets
5、任務佇列
6、Shell
7、測試包
8、django整合
示例
對所有請求都返回“Hello World!”作為響應
七、Web2py:全棧式Web框架
Web2py是一個為Python語言提供的全功能Web應用框架,旨在敏捷快速的開發Web應用,具有快速、安全以及可移植的資料庫驅動的應用,相容Google App Engine。
Web2py目錄結構
八、Falcon:構建雲API和網路應用後端的高效能Python框架
Falcon是一個構建雲API的高效能Python框架,它鼓勵使用REST架構風格,儘可能以最少的力氣做最多的事情。
特性
1、通過URI模板和資源類的路由
2、通過請求和響應類訪問headers和bodies
3、通過異常基類響應HTTP錯誤等等
基準測試
九、Dpark:Python版的Spark
DPark是一個基於Mesos的叢集計算框架(cluster computing framework),是Spark的Python實現版本,類似於MapReduce,但是比其更靈活,可以用Python非常方便地進行分散式計算,並且提供了更多的功能以便更好
的進行迭代式計算。DPark的計算模型是基於兩個中心思想的:對分散式資料集的平行計算以及一些有限的可以在計算過程中、從不同機器訪問的共享變數型別。這個的目標是為了提供一種類似於global address space
programming model的工具,例如OpenMP,但是我們要求共享變數的型別必須是那些很容易在分散式系統當中實現的,當前支援的共享變數型別有隻讀的資料和支援一種資料修改方式的累加器(accumulators)。
DPark具有的一個很重要的特性:分散式的資料集可以在多個不同的並行迴圈當中被重複利用。這個特性將其與其他資料流形式的框架例如Hadoop和Dryad區分開來。
示例
一個word counting程式
上面的指令碼可以無修改的在Mesos叢集上執行,只需稍微修改一下命令列引數:
十、Buildbot:基於Python的持續整合測試框架
Buildbot是一個開源框架,可以自動化軟體構建、測試和釋出等過程。每當程式碼有改變,伺服器要求不同平臺上的客戶端立即進行程式碼構建和測試,收集並報告不同平臺的構建和測試結果。
十一、Zerorpc:基於ZeroMQ的高效能分散式RPC框架
Zerorpc是一個基於ZeroMQ和MessagePack開發的遠端過程呼叫協議(RPC)實現。和 Zerorpc 一起使用的 Service API 被稱為 zeroservice。Zerorpc 可以通過程式設計或命令列方式呼叫。
它允許你:
1、不用修改程式碼即可顯露python模組
2、通過命令列遠端呼叫這些模組
如何把你程式碼中的物件暴露為一個zeroservice?
執行以上程式碼,在另一個終端,嘗試連線這個zeroservice
十二、Bottle: 微型Python Web框架
Bottle是一個簡單高效的遵循WSGI的微型python Web框架。說微型,是因為它只有一個檔案,除Python標準庫外,它不依賴於任何第三方模組。
特性
1、Routing:把請求對映到函式,建立簡潔動態的URLs
2、Templates:採用內建模板引擎,同時還支援 mako, jinja2, cheetah 等第三方模板
3、Utilities:便捷地讀取表單資料、上傳檔案、 cookies、HTTP頭資訊和其它 HTTP相關的後設資料
4、Server:內建HTTP開發伺服器,並且支援 paste, fapws3, bjoern, Google App Engine, Cherrypy 或者其它任何WSGI HTTP 伺服器
示例
執行上面的程式碼,訪問http://localhost:8080/hello/bottle試試。
下載和安裝
通過
或者
安裝最新穩定版,或者下載bottle.py (不穩定)到你的工程目錄。Bottle執行於Python 2.5+ and 3.x環境下。
十三、Tornado:非同步非阻塞IO的Python Web框架
Tornado的全稱是Torado Web Server,從名字上看就可知道它可以用作Web伺服器,但同時它也是一個Python Web的開發框架。最初是在FriendFeed公司的網站上使用,FaceBook收購了之後便開源了出來。
作為Web框架,是一個輕量級的Web框架,類似於另一個Python web 框架Web.py,其擁有非同步非阻塞IO的處理方式。
作為Web伺服器,Tornado有較為出色的抗負載能力,官方用nginx反向代理的方式部署Tornado和其它Python web應用框架進行對比,結果最大瀏覽量超過第二名近40%。
此外,它的原始碼也是Python開發者學習與研究的絕佳材料。
以下是Tornado的Hello World示例程式。
十四、webpy: 輕量級的Python Web框架
webpy的設計理念力求精簡(Keep it simple and powerful),原始碼很簡短,只提供一個框架所必須的東西,不依賴大量的第三方模組,它沒有URL路由、沒有模板也沒有資料庫的訪問。這樣的優點是,
框架給開發帶來的限制少,可以根據自己的需求進行定製。缺點就是,很多東西都需要自己親自動手開發。
雖然webpy的作者Aaron H.Swartz,一位偉大的程式設計師在2013年1月11日自殺身亡,結束了短暫的26年生命。但是,作為一個開源專案,目前還是有很多開發者在持續更新。
webpy非常的簡單,語法幾乎跟Python一樣,以下是一個簡單的示例:
十五、Scrapy:Python的爬蟲框架
網路爬蟲,是在網上進行資料抓取的程式,使用它能夠抓取特定網頁的HTML資料。雖然我們利用一些庫開發一個爬蟲程式,但是使用框架可以大大提高效率,縮短開發時間。Scrapy是一個使用Python編寫的,
輕量級的,簡單輕巧,並且使用起來非常的方便。
Scrapy使用了Twisted非同步網路庫來處理網路通訊。整體架構大致如下(注:圖片來自網際網路):
Scrapy主要包括了以下元件:
1、引擎,用來處理整個系統的資料流處理,觸發事務。
2、排程器,用來接受引擎發過來的請求,壓入佇列中,並在引擎再次請求的時候返回。
3、下載器,用於下載網頁內容,並將網頁內容返回給蜘蛛。
4、蜘蛛,蜘蛛是主要幹活的,用它來制訂特定域名或網頁的解析規則。
5、專案管道,負責處理有蜘蛛從網頁中抽取的專案,他的主要任務是清晰、驗證和儲存資料。當頁面被蜘蛛解析後,將被髮送到專案管道,並經過幾個特定的次序處理資料。
6、下載器中介軟體,位於Scrapy引擎和下載器之間的鉤子框架,主要是處理Scrapy引擎與下載器之間的請求及響應。
7、蜘蛛中介軟體,介於Scrapy引擎和蜘蛛之間的鉤子框架,主要工作是處理蜘蛛的響應輸入和請求輸出。
8、排程中介軟體,介於Scrapy引擎和排程之間的中介軟體,從Scrapy引擎傳送到排程的請求和響應。
使用Scrapy可以很方便的完成網上資料的採集工作,它為我們完成了大量的工作,而不需要自己費大力氣去開發。