現代開發者必備:5個更流暢、更受歡迎的Python web框架

全文共1837字,預計學習時長9分鐘

現代開發者必備:5個更流暢、更受歡迎的Python web框架

圖源:unsplash

如今,可供選擇的Python web框架有不少,能幫助你更快更輕鬆地創建web應用。本文就將爲大家介紹一些更現代、使用更廣泛的web框架。

1.FastAPI

現代開發者必備:5個更流暢、更受歡迎的Python web框架

 

FastAPI致力於實現輕便和快速,筆者很喜歡它,它的開發速度和簡單程度令人欣慰。這對於端點特別有用,因爲它們除了邏輯之外通常沒有太多內容,而且很可能不需要Django或TurboGears等工具提供的所有無用信息來創建。

FastAPI也有非常好的文檔,這讓它變得易於學習。FastAPI中的“快”代表了開發api所需要的速度和這些api返回的速度。與其他web框架類似,它還基於API創建的開放標準,你可以在一個方便的包中獲得傳輸數據所需的所有工具。

在語法方面,FastAPI採用一種非常類似於flass的方法來創建端點。

from fastapi import FastAPI
app = FastAPI()  
@app.get("/")
async def root():
     return {"message":"Hello World"}

2.Tornado

現代開發者必備:5個更流暢、更受歡迎的Python web框架

 

Tornado不僅是一個優秀的web框架,而且還是一個異步網絡庫,這讓Tornado就能夠爲數以千計的開放連接服務。Tornado使用非阻塞網絡進出流,使得它對於需要龐大且可伸縮的解決方案非常有用。

實際上,Tornado與大多數其他Python web框架有很大不同,它不在WSGI上運行。雖然這意味着在web服務器的選擇上可能受到一些限制,但Tornado提供了預打包服務器,可以立即啓動並運行。

雖然筆者很喜歡Tornado,但需要注意的是,當筆者嘗試用NGINX部署它時確實遇到了很多bug。而且在某些情況下,讓NGINX路由到正確的位置是並不是一件開心的事兒。筆者也遇到過Genie for Julia,不確定是什麼原因造成的,但如果使用Tornado,那麼最好設置一個Apache服務器,而不是NGINX服務器。

在語法方面,Tornado採用的是非常類似TurboGears的路由方法。使用Tornado時,通常會構建類來處理這些路由上的響應,而不是將邏輯放在路由中,來看看這個例子:

import tornado.ioloop
import tornado.web

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Hello,world")

def make_app():
    returntornado.web.Application([
        (r"/", MainHandler),
    ])

if __name__ == "__main__":
    app = make_app()
    app.listen(8888)
   tornado.ioloop.IOLoop.current().start()

3.Quart

現代開發者必備:5個更流暢、更受歡迎的Python web框架

 

不要被Quart的標誌搞暈了,它與Flash模塊關係更緊密,而不是Bottle模塊。Quart本質上是把兩個web框架放入一個模塊的組合:Asyncio和Flask。

這是一件了不起的事情,這兩者的結合稱得上完美!與Flask一樣,Quart是輕量級的,但是也包含了一個完整的異步特性列表。

筆者也很喜歡Quart,它感覺就像一個稍微加強了的Flask,在添加更多功能的過程中不會降低速度或易用性。有趣的是,Quart文檔實際上建議你訪問Flask文檔,筆者認爲這正說明了它的分叉特性。如果你想要一個異步Flask,Quart是很好的選擇。

from quart import Quart
app = Quart(__name__)
@app.route('/')
async def hello():
    return 'hello'
app.run()

4.BlackSheep

現代開發者必備:5個更流暢、更受歡迎的Python web框架

 

“BlackSheep”受到了ASP.NET和Flask等優秀工具的啓發,可用於輕鬆創建基於事件的web應用程序。筆者真的不明白爲什麼它被稱爲“BlackSheep”,這一框架背後的語法和方法與Flask幾乎相同。

from datetime import datetime
from blacksheep.server import Application
from blacksheep.server.responses import text
app = Application()
@app.route('/')
async def home(request):
    return text(f'Hello, World!{datetime.utcnow().isoformat()}')

與Quart一樣,Black Sheep也提供了非常棒的工具,用於在web上同步和創建非阻塞端點。整體上來講,它是一個非常好用的框架,但與Quart非常相似。所以如果用了一個,你肯定也同時會使用這兩個框架。

5.Pyramid

現代開發者必備:5個更流暢、更受歡迎的Python web框架

 

Pyramid是筆者很喜歡使用的網絡框架之一。雖然Pyramid堅持輕量級的想法,並提供非常簡單的方法,以最小的代碼快速建立端點,但它同時也包括所有你可能需要的功能。

Pyramid受讚譽最多的一點是它的可擴展性。Pyramid可以是基礎的,也可以是複雜的,數據科學家會很喜歡它,他們可能想在未來擴展他們的端點。在句法上,Pyramid和Tornado大致相同。它始終遵循面向對象的範式。

from wsgiref.simple_server importmake_server
from pyramid.config import Configurator
from pyramid.response import Response 
def hello_world(request):
     return Response('HelloWorld!')
if __name__ == '__main__':
     with Configurator() asconfig:  
        config.add_route('hello', '/')
        config.add_view(hello_world,route_name='hello')        
        app = config.make_wsgi_app()
        server = make_server('0.0.0.0',6543, app)
        server.serve_forever()

如今,有一些更現代、使用更廣泛的web框架,能幫助你部署新的端點。它們各有亮點,但如果必須選擇的話,筆者可能會選擇FastAPI。FastAPI簡單、輕量級,一個字就是快。

當然,這並不是說FastAPI在每種情況下都是最好的選擇。最好根據具體情況來決定需要的最佳特性是什麼然後再選擇,而不是根據主觀意見。

現代開發者必備:5個更流暢、更受歡迎的Python web框架

圖源:unsplash

如果有足夠的存儲空間,所有這些框架都是值得一試。如果想讓體驗更上一層樓,下一步就是對請求響應進行一些速度測試,看看誰是最佳。

現代開發者必備:5個更流暢、更受歡迎的Python web框架

一起分享AI學習與發展的乾貨
歡迎關注全平臺AI垂類自媒體 “讀芯術”

(添加小編微信:dxsxbb,加入讀者圈,一起討論最新鮮的人工智能科技哦~)

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