Python的5個(gè)頂級(jí)異步框架

Python在3.4引入了 asyncio 庫,3.6新增了關(guān)鍵字 async和await,此后,異步框架迅速發(fā)展了起來,性能上能和Node.js比肩,除非是CPU密集型任務(wù),否則沒有理由不適用異步框架。

創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站制作、做網(wǎng)站、外貿(mào)營銷網(wǎng)站建設(shè)、天津網(wǎng)絡(luò)推廣、微信小程序、天津網(wǎng)絡(luò)營銷、天津企業(yè)策劃、天津品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供天津建站搭建服務(wù),24小時(shí)服務(wù)熱線:18980820575,官方網(wǎng)址:muchs.cn

如果你是Web開發(fā)者,現(xiàn)在異步Web框架上有了更多選擇!

1、Tornado

Tornado 根本不是什么新框架,它最初是由FriendFeed(后被Facebook收購)在2009年發(fā)布。從一開始就提供有異步編程的功能。

Tornado 不僅僅是Web框架,同時(shí)它內(nèi)置了很多異步模塊,可用于自己構(gòu)建異步應(yīng)用。這些模塊包括:

  • 協(xié)同程序和其他原語(tornado.gen,tornado.locks,tornado.queues等)
  • 網(wǎng)絡(luò)模塊(tornado.ioloop,tornado.iostream)
  • 異步服務(wù)器和客戶端(tornado.httpserver,httpclient,等)

通過這些模塊,Tornado 構(gòu)建了自己的異步Web框架模塊。

import tornado.ioloopimport tornado.webclass 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社區(qū)中擁有很多追隨者,并且經(jīng)驗(yàn)豐富的架構(gòu)師使用它們來構(gòu)建功能強(qiáng)大的系統(tǒng)。這個(gè)框架長期以來一直在解決并發(fā)問題,但是由于它不支持WSGI標(biāo)準(zhǔn)(大部分Python庫仍在同步中),因此尚未成為主流。

國內(nèi)據(jù)說知乎是基于Torando構(gòu)建的。

2、 Snaic

Sanic是一個(gè)誕生有3年的框架:它只支持3.6以上Python版本,支持通用的async / await語法,開箱即用,因此你無需閱讀大量文檔就可以寫出你的一個(gè)HTTP 處理器。

除了async關(guān)鍵字之外,語法上和 flask 基于沒差別。

from sanic import Sanicfrom sanic.response import jsonapp = Sanic()@app.route("/")async def test(request):    return json({"hello": "world"})if __name__ == "__main__":    app.run(host="0.0.0.0", port=8000)

Sanic可以說是Python世界中最流行和最受歡迎的異步框架。它具有你項(xiàng)目中需要的所有功能:路由,中間件,Cookie,版本控制,藍(lán)圖,基于類的視圖,靜態(tài)文件,流,sockets,此外你還可以集成模板,數(shù)據(jù)庫驅(qū)動(dòng),文件I / O,隊(duì)列等等。

3、Vibora

Vibora和Sanic非常像,致力于成為最快的Python Web服務(wù)器。他們網(wǎng)站首頁有一個(gè)框架比較圖:

Python的5個(gè)頂級(jí)異步框架

Vibora聲稱比其它框架快幾倍,比競爭對(duì)手Sanic還快兩倍多。當(dāng)然,這個(gè)基準(zhǔn)測試要持懷疑態(tài)度。

盡管在語法和功能上,Vibora可以與Sanic媲美但我認(rèn)為Sanic更加成熟,因?yàn)樗呀?jīng)存在了很長一段時(shí)間并且具有更大的社區(qū)。

from vibora import Vibora, JsonResponseapp = Vibora()@app.route('/')async def home():    return JsonResponse({'hello': 'world'})if __name__ == '__main__':    app.run(host="0.0.0.0", port=8000)

4、Quart

如果您喜歡Flask,但又要支持異步, 那么Quart你一定會(huì)喜歡

Quart符合ASGI標(biāo)準(zhǔn),該標(biāo)準(zhǔn)是WSGI標(biāo)準(zhǔn)的后繼產(chǎn)品,并提供異步支持。Quart不僅與Flask相似,而且與Flask API兼容!該框架的作者希望保留了Flask的風(fēng)格,只是向其中添加異步、WebSocket和HTTP 2支持。因此,你可以從Flask文檔中學(xué)習(xí)Quart的用法,只需要記住Quart中的函數(shù)是異步的就行。

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

幾乎完全像Flask

由于Quart是從Flask中演進(jìn)過來的,因此Flask的所有功能均可用:路由,中間件,會(huì)話,模板,藍(lán)圖等。實(shí)際上,你甚至可以直接在Quart內(nèi)部使用Flask的擴(kuò)展插件。不過,有一個(gè)問題是它僅支持Python 3.7+。

5、FastAPI

FastAPI似乎是異步 Python 框架里功能、文檔最豐富的框架。

該框架的作者深入研究了其他幾個(gè)框架,從諸如Django到Sanic之類的現(xiàn)代框架,以及NestJS(Node.js,Typescript Web框架)。

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

rom fastapi import FastAPIapp = FastAPI()@app.get("/users/me")async def read_user_me():    return {"user_id": "the current user"}@app.get("/users/{user_id}")async def read_user(user_id: str):    return {"user_id": user_id}

FastAPI勝過其他框架的殺手锏,自動(dòng)生成API文檔:

編寫API接口后,你就可以使用符合標(biāo)準(zhǔn)的UI如SwaggerUI,ReDoc等來使用API。

Python的5個(gè)頂級(jí)異步框架

那性能呢?FastAPI是基于Starlette庫構(gòu)建的,其性能可與Node相匹配,在某些情況下甚至可以與Go相匹配??偠灾艺娴挠幸环N感覺,F(xiàn)astAPI將成為Python的頂級(jí)異步框架。

總結(jié)

如今,Python異步生態(tài)正在發(fā)生很多事情。出現(xiàn)了新的框架,舊的框架正在重寫,很多庫開始支持異步行為。對(duì)于Web框架,Python已準(zhǔn)備就緒,可提供出色的性能。如果很長一段時(shí)間你在考慮遷移到Node或者go,那現(xiàn)在不需要了。

網(wǎng)頁題目:Python的5個(gè)頂級(jí)異步框架
文章網(wǎng)址:http://muchs.cn/article16/picggg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號(hào)網(wǎng)頁設(shè)計(jì)公司、網(wǎng)站制作、網(wǎng)站維護(hù)、網(wǎng)站導(dǎo)航、建站公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化