python 5個頂級非同步框架推薦

2022-10-03 09:09:11 字數 3064 閱讀 7675

python在3.4引入了 asyncio 庫,3.6新增了關鍵字 async和await,此後,非同步框架迅速發展了起來,效能上能和node.js比肩,除非是cpu密集型任務,否則沒有理由不適用非同步框架。

如果你是web開發者,現在非同步web框架上有了更多選擇!

1、tornado

tornado 根本不是什麼新框架,它最初是由friendfeed(後被facebook收購)在2023年發布。從一開始就提供有非同步程式設計的功能。

tornado 不僅僅是web框架,同時它內建了很多非同步模組,可用於自己構建非同步應用。這些模組包括:

通過這些模組,tornado 構建了自己的非同步web框架模組。

import tornado.ioloop

import tornado.web

class mainhandler(tornado.web.requesthandler):

def get(self):

self.write("hello, world")

def make_app():

return tornado.web.application([

(r"/", mainhandler),

])if __name__ == "__main__":

app = make_app()

app.listen(8888)

tornado.ioloop.ioloop.current().start()

tornado在python社群中擁有很多追隨者,並且經驗豐富的架構師使用它們來構建功能強大的系統。這個框架長期以來一直在解決併發問題,但是由於它不支援wsgi標準(大部分python庫仍在同步中),因此尚未成為主流。

國內據說知乎是基於torando構建的。

2、 snaic

sanic是乙個誕生有3年的框架:它只支援3.6以上python版本,支援通用的async/await語法,開箱即用,因此你無需閱讀大量文件就可以寫出你的乙個http 處理器。

除了async關鍵字之外,語法上和 flask 基於沒差別。

from sanic import sanic

from sanic.response import json

app = sanic()

@app.route("/")

async def test(request):

return json()

if __name__ == "__main__":

app.run(host="0.0.0.0", port=8000)

sanic可以說是python世界中最流行和最受歡迎的非同步框架。它具有你專案中需要的所有功能:路由,中介軟體,cookie,版本控制,藍圖,基於類的檢視,靜態檔案,流,sockets,此外你還可以整合模板,資料庫驅動,檔案i / o,佇列等等。

3、vibora

vibora和sanic非常像,致力於成為最快的python web伺服器。他們**首頁有乙個框架比較圖:

vibora聲稱比其它框架快幾倍,比競爭對手sanic還快兩倍多。當然,這個基準測試要持懷疑態度。

儘管在語法和功能上,vibora可以與sanic媲美但我認為sanic更加成熟,因為它已經存在了很長一段時間並且具有更大的社群。

from vibora import vibora, jsonresponse

app = vibora()

@app.route('/')

async def home():

return jsonresponse()

if __name__ == '__main__':

app.run(host="0.0.0.0", port=8000)

4、quart

如果您喜歡flask,但又要支援非同步, 那麼quart你一定會喜歡

quart符合asgi標準,該標準是wsgi標準的後繼產品,並提供非同步支援。quart不僅與flask相似,而且與flask api相容!該框架的作者希望保留了flask的風格,只是向其中新增非同步、websocket和http 2支援。因此,你可以從flask文件中學習quart的用法,只需要記住quart中的函式是非同步的就行。

from quart imporqinhhaaet quart

app = quart(__name__)

@app.route('/')

async def hello():

return 'hello'

app.run()

幾乎完全像flask

由於quart是從flask中演進過來的,因此flask的所有功能均可用:路由,中介軟體,會話,模板,藍圖等。實際上,你甚至可以直接在quart內部使用flask的擴充套件外掛程式。不過,有乙個問題是它僅支援python 3.7+。

5、fastapi

fastapi似乎是非同步 python 框架裡功能、文件最豐富的框架。

該框架的作者深入研究了其他幾個框架,從諸如django到sanic之類的現代框架,以及nestjs(node.js,typescript web框架)。

語法甚至可以說它比我們遇到的其他框架更有趣:

rom fastapi import fastapi

app = fastapi()

@app.get("/users/me")

async def read_user_me():

return

@app.get("/users/")

async def read_user(user_id: str):

return

fastapi勝過其他框架的殺手鐗列表:

自動生成api文件:編寫api介面後,你就可以使用符合標準的ui如swaggerui,redoc等來使用程式設計客棧api​​。程式設計客棧

那效能呢?fastapi是基於starlette庫構建的,其效能可與node相匹配,在某些情況下甚至可以與go相匹配。總而言之,我真的有一種感覺,fastapi將成為python的頂級非同步框架。

總結如今,python非同步生態正在發生很多事情。出現了新的框架,舊的框架正在重寫,很多庫開始支援非同步行為。對於web框架,python已準備就緒,可提供出色的效能。如果很長一段時間你在考慮遷移到node或者go,那現在不需要了。

基礎python5個例項運用

p int input 請輸入你的本金 r int input 請輸入利率 n int input 請輸入存的年份 amount p p 1 r nprint 本金利率和是 format amount import math r int input 請輸入球的半徑 area 4 math.pi r ...

python 5個實用的技巧

下面我挑選出的這幾個技巧常常會被人們忽略,但它們在日常程式設計中能真正的給我們帶來不少幫助。1.字典推導 dictionary comprehensions 和集合推導 set comprehensions 大多數的python程式設計師都知道且使用過列表推導 list comprehensions...

python實用寶典 python 5個實用的技巧

下面我挑選出的這幾個技巧常常會被人們忽略,但它們在日常程式設計中能真正的給我們帶來不少幫助。1.字典推導 dictionary comprehensions 和集合推導 set comprehensions 大多數的python程式設計師都知道且使用過列表推導 list comprehensions...