淺析七款“Python開源框架”的優缺點

一:Django

Django 應該是最出名的Python框架,GAE甚至Erlang都有框架受它影響。Django是走大而全的方向,它最出名的是其全自動化的管理後臺:只需要使用起ORM,做簡單的對象定義,它就能自動生成數據庫結構、以及全功能的管理後臺。

  • 優點:

開源框架,有完美的文檔支持

解決方案衆多,內部功能支持較多

優雅的URL,完整的路由系統

自助式的後臺管理

  • 缺點:

系統緊耦合,想用喜歡的第三方庫來代替是非常難的,即使打了一些補丁用上了也會覺得非常彆扭。

Django自帶的ORM遠不如SQLAlchemy強大。

Template功能比較弱,不能插入Python代碼,要寫複雜一點的邏輯需要另外用Python實現 Tag或Filter。

二:Flask

Flask是一個用Python編寫的輕量級Web應用框架。基於Werkzeug WSGI工具箱和Jinja2模板引擎。Flask也被稱爲“microframework”,因爲它使用簡單的核心,用extension增加其他功能。Flask沒有默認使用的數 據庫、窗體驗證工具。

  • 優點:

Flask比Django更靈活,用Flask來構建應用之前,選擇組件的時候會給開發者帶來更多的靈活性 ,可能有的應用場景不適合使用一個標準的ORM(Object-Relational Mapping對象關聯映射),或者需要與不同的工作流和模板系統交互。

  • 缺點:

Flask只是一個內核,默認依賴於兩個外部庫: Jinja2 模板引擎和 Werkzeug WSGI 工具集,其他很多功能都是以擴展的形式進行嵌入使用。

三:Scrapy

Scrapy是Python開發的一個快速、高層次的屏幕抓取和web抓取框架,用於抓取web站點並從頁面中提取結構化的數據。Scrapy用途廣泛,可以用於數據挖掘、監測和自動化測試。

  • 優點:

Scrapy是一個功能非常強大的爬蟲框架,它不僅能便捷地構建request,還有強大的selector能夠方便地解析response,然而它最受歡迎的還是它的性能,既抓取和解析的速度,它的downloader是多線程的,request是異步調度和處理的。這兩點使它的爬取速度非常之快。 另外還有內置的logging,exception,shell等模塊,爲爬取工作帶來了很多便利。

  • 缺點:

scrapy是封裝起來的框架,他包含了下載器,解析器,日誌及異常處理,基於多線程, twisted的方式處理,對於固定單個網站的爬取開發,有優勢,但是對於多網站爬取100個網站,併發及分佈式處理方面,不夠靈活,不便調整與括展。

四:Tornado

Tornado是一種 Web 服務器軟件的開源版本。Tornado 和現在的主流 Web 服務器框架(包括大多數 Python 的框架)有着明顯的區別:它是非阻塞式服務器,而且速度相當快。

  • 優點:

Tornado擅長爲需要嚴密控制異步網絡細節的應用程序提供基礎架構。例如,Tornado不僅提供內置的異步HTTP服務器,還提供異步HTTP客戶端。因此,Tornado非常適合構建應用程序,例如Web scraper或bot,它們並行查詢其他站點並對返回的數據進行操作。

  • 缺點:

模板和數據庫部分有很多第三方的模塊可供選擇,這樣不利於封裝爲一個功能模塊。

五:Web2py

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

  • 優點:

Web2py最大的吸引力在於其內置的開發環境。當設置Web2py實例時,將獲得一個Web界面,實際上是一個在線Python應用程序編輯器,可以在其中配置應用程序的組件。這通常意味着創建模型,視圖和控制器,每個都通過Python模塊或HTML模板進行描述。

  • 缺點:

Web2py的一個重要限制是它僅與Python 2.x兼容。首先這意味着Web2py無法使用Python 3的異步語法。如果你依賴於Python3獨有的外部庫,那麼你就不走運了。但是,正在開展使Web2py Python3兼容的工作,並且在撰寫本文時它已接近完成。

六:Weppy

Weppy感覺就像Flask的簡約風格和Django的完整性之間的中間標記。雖然開發Weppy應用程序具有Flash的直接性,但Weppy具有Django中的許多功能,如數據層和身份驗證。因此,Weppy適用於從極其簡單到適度複雜的應用程序。

  • 優點:

Weppy的文檔與框架本身具有相同的風格。它乾淨,可讀,並且被人類消費。除了通常的“hello world”應用程序示例之外,它還包含一個很好的演練教程,可以讓你創建一個微博系統作爲初學者項目。

  • 缺點:

雖然Weppy有一個擴展機制,但官方批准的附加組件列表很小,遠小於Flask的擴展目錄。

七:Bottle

Bottle可以被認爲是一種迷你燒瓶,因爲它比其他“微框架”更加緊湊和簡潔。由於其佔地面積最小,Bottle非常適合包含在其他項目中或快速交付REST API等小型項目。

  • 優點:

Bottle不需要像其他框架那樣多的文檔,但文檔絕不是吝嗇。所有關鍵的東西都適合單個(儘管很長)的網頁。除此之外,還可以找到每個API的完整文檔,如何在各種基礎架構上進行部署的示例,內置模板語言的解釋以及一系列常見配方。

  • 缺點:

Bottle極簡主義的一個後果是有些功能根本就不存在。不支持表單驗證,包括CSRF保護等功能。如果要構建支持高度用戶交互的Web應用程序,則需要自己添加它們。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章