欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python 5個(gè)頂級(jí)異步框架推薦

 更新時(shí)間:2020年09月09日 09:44:53   作者:劉志軍  
這篇文章主要介紹了python5個(gè)頂級(jí)的異步框架,幫助大家更好的利用python進(jìn)行web開(kāi)發(fā),感興趣的朋友可以了解下

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

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

1、Tornado

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

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

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

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

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

2、 Snaic

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

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

from sanic import Sanic
from sanic.response import json

app = Sanic()

@app.route("/")
async def test(request):
  return json({"hello": "world"})

if __name__ == "__main__":
  app.run(host="0.0.0.0", port=8000)

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

3、Vibora

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

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

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

from vibora import Vibora, JsonResponse

app = 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 Quart

app = Quart(__name__)

@app.route('/')
async def hello():
  return 'hello'

app.run()

幾乎完全像Flask

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

5、FastAPI

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

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

語(yǔ)法甚至可以說(shuō)它比我們遇到的其他框架更有趣:

rom fastapi import FastAPI

app = 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勝過(guò)其他框架的殺手锏列表:

自動(dòng)生成API文檔:編寫API接口后,你就可以使用符合標(biāo)準(zhǔn)的UI如SwaggerUI,ReDoc等來(lái)使用API​​。

那性能呢?FastAPI是基于Starlette庫(kù)構(gòu)建的,其性能可與Node相匹配,在某些情況下甚至可以與Go相匹配??偠灾?,我真的有一種感覺(jué),F(xiàn)astAPI將成為Python的頂級(jí)異步框架。

總結(jié)

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

原文參考連接:https://geekflare.com/python-asynchronous-web-frameworks/

以上就是python 5個(gè)頂級(jí)異步框架推薦的詳細(xì)內(nèi)容,更多關(guān)于python 異步框架的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 如何利用?Python?繪制動(dòng)態(tài)可視化圖表

    如何利用?Python?繪制動(dòng)態(tài)可視化圖表

    這篇文章主要介紹了如何利用?Python?繪制動(dòng)態(tài)可視化圖表,主要介紹介紹如何進(jìn)行保存gif格式的文件。那么我們就開(kāi)始進(jìn)入主題,來(lái)談一下Python當(dāng)中的gif模塊,需要的朋友可以參考一下
    2022-02-02
  • python對(duì)比兩個(gè)字典dict的差異詳解

    python對(duì)比兩個(gè)字典dict的差異詳解

    這篇文章主要為大家詳細(xì)介紹了python?如何對(duì)比兩個(gè)字典dict的不同差異,文中的示例代碼簡(jiǎn)潔易懂,具有一定的學(xué)習(xí)價(jià)值,感興趣的可以了解一下
    2023-05-05
  • Python入門篇之?dāng)?shù)字

    Python入門篇之?dāng)?shù)字

    本文的主題是 Python 中的數(shù)字。會(huì)詳細(xì)介紹每一種數(shù)字類型,它們適用的各種運(yùn)算符, 以及用于處理數(shù)字的內(nèi)建函數(shù)。在文章的末尾, 簡(jiǎn)單介紹了幾個(gè)標(biāo)準(zhǔn)庫(kù)中用于處理數(shù)字的模塊。
    2014-10-10
  • YOLOv5目標(biāo)檢測(cè)之a(chǎn)nchor設(shè)定

    YOLOv5目標(biāo)檢測(cè)之a(chǎn)nchor設(shè)定

    在訓(xùn)練yolo網(wǎng)絡(luò)檢測(cè)目標(biāo)時(shí),需要根據(jù)待檢測(cè)目標(biāo)的位置大小分布情況對(duì)anchor進(jìn)行調(diào)整,使其檢測(cè)效果盡可能提高,下面這篇文章主要給大家介紹了關(guān)于YOLOv5目標(biāo)檢測(cè)之a(chǎn)nchor設(shè)定的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • 詳解Python中的PyInputPlus模塊

    詳解Python中的PyInputPlus模塊

    這篇文章主要介紹了Python中的PyInputPlus模塊詳解,PyInputPlus包含與input()類似的、用戶多種數(shù)據(jù)(數(shù)字日期、E-mail地址等)的函數(shù),PyInputPlus還包含其他有用的功能,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-05-05
  • Python可視化神器pyecharts繪制水球圖

    Python可視化神器pyecharts繪制水球圖

    這篇文章主要介紹了Python可視化神器pyecharts繪制水球圖,水球圖首先是動(dòng)態(tài)的效果,像水流一樣波動(dòng),所以看起來(lái)比較的舒服,一般用于業(yè)務(wù)里面的完成率,其實(shí)和之前的儀表盤有點(diǎn)類似
    2022-07-07
  • python中dlib庫(kù)的詳細(xì)安裝方法

    python中dlib庫(kù)的詳細(xì)安裝方法

    這篇文章主要介紹了python之dlib庫(kù)的詳細(xì)安裝方法,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)python的小伙伴們有很好的幫助,需要的朋友可以參考下
    2021-04-04
  • python 求定積分和不定積分示例

    python 求定積分和不定積分示例

    今天小編就為大家分享一篇python 求定積分和不定積分示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-11-11
  • python實(shí)現(xiàn)ip地址查詢經(jīng)緯度定位詳解

    python實(shí)現(xiàn)ip地址查詢經(jīng)緯度定位詳解

    這篇文章主要介紹了python實(shí)現(xiàn)ip地址查詢經(jīng)緯度定位詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • Python中__str__()方法的實(shí)用技巧分享

    Python中__str__()方法的實(shí)用技巧分享

    在Python編程中,__str__()是一個(gè)特殊方法,它允許自定義對(duì)象的字符串表示形式,本文將深入探討__str__()的相關(guān)實(shí)用技巧,希望對(duì)大家有所幫助
    2023-11-11

最新評(píng)論