1. 程式人生 > >15個最受歡迎的Python開源框架

15個最受歡迎的Python開源框架

api 架構風格 fms isp 客戶端 比利時 wds pla iat

 一、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。

  示例

    技術分享圖片

需要框架項目實戰視頻 + Python學習交流 643692991

  三、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的主要特性之一是它的邏輯模型,抽象物理數據並提供給終端用戶層。

    技術分享圖片

需要框架項目實戰視頻 + Python學習交流 643692991

  五、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!”作為響應

    技術分享圖片


需要框架項目實戰視頻 + Python學習交流 643692991

  七、Web2py:全棧式Web框架

    Web2py是一個為Python語言提供的全功能Web應用框架,旨在敏捷快速的開發Web應用,具有快速、安全以及可移植的數據庫驅動的應用,兼容Google App Engine。

  Web2py目錄結構

    技術分享圖片

  八、Falcon:構建雲API和網絡應用後端的高性能Python框架

    Falcon是一個構建雲API的高性能Python框架,它鼓勵使用REST架構風格,盡可能以最少的力氣做最多的事情。

  特性

    1、通過URI模板和資源類的路由

    2、通過請求和響應類訪問headers和bodies

    3、通過異常基類響應HTTP錯誤等等

  基準測試

    技術分享圖片

    技術分享圖片

    技術分享圖片
需要框架項目實戰視頻 + Python學習交流 643692991

  九、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是一個開源框架,可以自動化軟件構建、測試和發布等過程。每當代碼有改變,服務器要求不同平臺上的客戶端立即進行代碼構建和測試,收集並報告不同平臺的構建和測試結果。

    技術分享圖片

需要框架項目實戰視頻 + Python學習交流 643692991

  十一、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環境下。

需要框架項目實戰視頻 + Python學習交流 643692991

  十三、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一樣,以下是一個簡單的示例:

    技術分享圖片

需要框架項目實戰視頻 + Python學習交流 643692991

  十五、Scrapy:Python的爬蟲框架

網絡爬蟲,是在網上進行數據抓取的程序,使用它能夠抓取特定網頁的HTML數據。雖然我們利用一些庫開發一個爬蟲程序,但是使用框架可以大大提高效率,縮短開發時間。Scrapy是一個使用Python編寫的,

  輕量級的,簡單輕巧,並且使用起來非常的方便。

  Scrapy使用了Twisted異步網絡庫來處理網絡通訊。整體架構大致如下(註:圖片來自互聯網):

    技術分享圖片

    Scrapy主要包括了以下組件:

    1、引擎,用來處理整個系統的數據流處理,觸發事務。

    2、調度器,用來接受引擎發過來的請求,壓入隊列中,並在引擎再次請求的時候返回。

    3、下載器,用於下載網頁內容,並將網頁內容返回給蜘蛛。

    4、蜘蛛,蜘蛛是主要幹活的,用它來制訂特定域名或網頁的解析規則。

    5、項目管道,負責處理有蜘蛛從網頁中抽取的項目,他的主要任務是清晰、驗證和存儲數據。當頁面被蜘蛛解析後,將被發送到項目管道,並經過幾個特定的次序處理數據。

    6、下載器中間件,位於Scrapy引擎和下載器之間的鉤子框架,主要是處理Scrapy引擎與下載器之間的請求及響應。

    7、蜘蛛中間件,介於Scrapy引擎和蜘蛛之間的鉤子框架,主要工作是處理蜘蛛的響應輸入和請求輸出。

    8、調度中間件,介於Scrapy引擎和調度之間的中間件,從Scrapy引擎發送到調度的請求和響應。

    使用Scrapy可以很方便的完成網上數據的采集工作,它為我們完成了大量的工作,而不需要自己費大力氣去開發。

15個最受歡迎的Python開源框架