您當前位置>首頁 » 新聞資(zī)訊 » 網站(zhàn)建設 >
2020年值得去了解的12個(gè)Python Web框架
發表時間:2020-1-15
發布人:葵宇科技
浏覽次數:49
在Web開發領域,Python其實并沒有像在機器(qì)學習和(hé)數據處理這個(gè)領域一樣占有統治地位。不過鑒于Python在最近幾年的強勢地位,了解一下(xià)Python的web框架也挺有必要的。萬一哪天我自己或者是客戶“腦抽”了,真的要用Python來寫web應用了呢(ne)?框架(Framework)讓程序員的生活更容易,常用的功能和(hé)方法都打包進了框架裡,直接從庫裡拿出來修改一下(xià)就用,确實是個(gè)省時省力,幹活多快好省的好東西。
1. Why Python?
就不廢話了,用一張圖片和(hé)一張圖表來解釋吧。
- 人生苦短(duǎn),Python是岸
- 日月(yuè)蛇(Python)教,一統江湖之勢
2. Python Web框架總結
總體來說Django和(hé)Flask是最最流行的Python Web框架,但是這不是說我們就可(kě)以忽略其他的框架。其實每一個(gè)框架都有其獨特的設計和(hé)優勢,在某些需求下(xià),可(kě)能會更适合你(nǐ)的項目。
我們可(kě)以把這些框架分成兩種類型: 1.全功能框架(或重型框架),這種類型的框架包括創建web應用所需要的大部分功能,通(tōng)常可(kě)以用于構架需要完整功能和(hé)複雜設計的大型網站(zhàn)應用。2.輕量級框架,顧名思義,就是提供比較簡單的網站(zhàn)構建功能,通(tōng)常用于簡單的,或者是小型的網站(zhàn)應用。
全功能框架
Django
官網 | GitHub | PyPI | Awesome
Django應該是最流行的Python Web框架了,沒有之一。而且其包含了創建應用需要的幾乎全部功能,給人的感覺是這個(gè)框架希望框架本身實現各種功能,而不是依靠其他的庫來完成。比如(rú)Django集成了安全認證,URL Routing,模闆引擎,ORM以及數據庫Scheme映射。這使得Django非常強大,有很好的可(kě)擴展性,性能也非常好。Django支持 PostgreSQL, MySQL, SQLite, Oracle和(hé)其他第三方數據庫。其ORM功能支持多數據庫之間的轉換。
總之Django的設計優秀,結構合理,性能出衆。适合不同規模的網站(zhàn),在2020年,Django會加入對機器(qì)學習的支持,同時攜Python迅猛發展勢頭,很有可(kě)能會成為今年使用者增長最快的Web框架。
Pyramid
Pyramid是一個(gè)在2010年就誕生的框架,其目标是簡化web開發的複雜性。最新的版本是1.10,這已經是其第10個(gè)正式版本了。這個(gè)框架可(kě)以用于複雜的應用開發,也适用輕量級應用。Pyraid的開發社區還是比較活躍的。版本更新頻繁,各技術(shù)群的讨論也是非常熱烈的。
TurboGears
官網 | GitHub | PyPI
TurboGear是一個(gè)開源和(hé)數據驅動(dòng)的程序框架,它是建構在很多不同的中(zhōng)間件和(hé)庫的基礎上,實際上這個(gè)框架試圖把其他的Python框架中(zhōng)最好的組件融入其中(zhōng)。TurboGear允許開發者能夠快速搭建數據驅動(dòng)的網站(zhàn)應用。它有非常好用的模闆引擎,對聚合的支持,功能強大而靈活的ORM工具,而且自帶了大量的小代碼片段,可(kě)以讓開發更容易。
現在TurboGear的社區正在緻力于開發一個(gè)簡化(瘦身)版的TurboGear框架,這将會給大家帶來一個(gè)更加簡單易用的框架。
Web2py
官網 | GitHub | PyPI
這個(gè)原先是作為一個(gè)教學用的項目被開發出來,自帶IDE工具,為了簡化使用,其沒有項目級的配置文(wén)件。Web2Py有一個(gè)内置的ticket系統,隻要出現錯誤就會生出ticket,用來追蹤運行時的問(wèn)題。
這個(gè)項目的社區和(hé)郵件列表并不活躍
輕量級框架
Flask
官網 | GitHub | PyPI | Awesome
目前為止,Flask是最流行的Python輕量級Web框架。這個(gè)框架是受到Sinatra Ruby的啟發而開發出來的。 Flask基于Werkzeug WSGI toolkit以及 Jinja2 模闆。
Flask的目的是要建立一個(gè)非常穩定和(hé)可(kě)靠的Web應用的基礎系統,我們可(kě)以使用Flack再加上各種插件,擴展和(hé)其他模塊,能夠構建功能強大的網站(zhàn)和(hé)應用。事實上,如(rú)果Django不适合的應用類型,使用Flask基本上是Python Web開發的默認選擇。
Flask也是一個(gè)在2010年啟動(dòng)的開源項目,到目前為止已經更新了27個(gè)版本,由于曆史比較長,有些早期的擴展已經不被支持,文(wén)檔也不再更新。需要在網絡上找到最新的文(wén)檔和(hé)功能。
Bottle
官網 | GitHub | PyPI
Bottle是一個(gè)輕量級的框架,最初是設計為一個(gè)API框架,整個(gè)Bottle框架是在一個(gè)源文(wén)件上。沒有引用任何Python标準庫。建議是如(rú)果使用Bottle,最好是非常小的程序,最好小于500行代碼并且沒有特殊的需求。
CherryPy, Falcon, Hug, FastAPI - 極為小衆,就不介紹了。讀者有興趣可(kě)以自己查看
異步框架
以下(xià)兩個(gè)開源框架用于處理高并發的應用,可(kě)以用于需要解決C10K問(wèn)題(10000+并發的場景)
Sanic
官網 | GitHub | PyPI
Sanic是基于uvloop開發的,用于創建高并發異步Http請求的應用,必須使用Python3.5+,兼容Python3.5+的async/await方法,提供非阻塞的異步訪問(wèn)功能。Sanic是一個(gè)非常流行的異步框架。提供了routing, middleware, cookies, versioning, static files, blueprints, class-based views, 以及sockets的功能。不過比較可(kě)惜的是并沒有提供模闆引擎,也沒有内置的數據庫支持功能。
在一個(gè)Benchmark測試中(zhōng),Sanic單進程和(hé)100連接的情況下(xià),最高每秒同時并發處理33542個(gè)請求,平均時延2.96ms。
Tornado
官網 | GitHub | PyPI
Tornado是一個(gè)Python web框架加上異步網絡處理庫,用于大流量的網絡應用開發。使用非阻塞I/O,目标能夠處理C10K網站(zhàn)。如(rú)果配置合理,Tornado框架的網站(zhàn)應用能夠輕松應對10000+并發的流量。
Tornado的流行程度介于Django和(hé)Flask之間,如(rú)果你(nǐ)需要一個(gè)web應用,同時也要支持高并發,那Tornado是最好的選擇