日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

python異步的ASGI與Fast Api實(shí)現(xiàn)

瀏覽:206日期:2022-06-15 08:00:17
目錄ASGI框架ASGI服務(wù)器FastAPI總結(jié)

Asgi是異步通信服務(wù)規(guī)范。客戶端發(fā)起服務(wù)呼叫,但不等待結(jié)果。調(diào)用方立即繼續(xù)其工作,并不關(guān)心結(jié)果。如果調(diào)用方對(duì)結(jié)果感興趣,有一些機(jī)制可以讓其隨時(shí)被回調(diào)方法返回結(jié)果。

ASGI嘗試保持在一個(gè)簡(jiǎn)單的應(yīng)用接口的前提下,提供允許數(shù)據(jù)能夠在任意的時(shí)候、被任意應(yīng)用進(jìn)程發(fā)送和接受的抽象。并且同樣描述了一個(gè)新的,兼容HTTP請(qǐng)求響應(yīng)以及WebSocket數(shù)據(jù)幀的序列格式。允許這些協(xié)議能通過(guò)網(wǎng)絡(luò)或本地socket進(jìn)行傳輸,以及讓不同的協(xié)議被分配到不同的進(jìn)程中。

#Asgi example async def application(scope, receive, send): event = await receive()... await send({'type': 'websocket.send', ...})ASGI框架

您可以使用 Uvicorn,Daphne 或 Hypercorn 運(yùn)行任何 ASGI 框架

對(duì)于小型服務(wù),您也可以直接編寫(xiě) ASGI 應(yīng)用程序。例如之前編寫(xiě)的異步框架。

Python 中有以下幾個(gè)支持 ASGI 的異步框架

StarletteStarlette 是一個(gè)輕量級(jí)的 ASGI 框架/工具包。它是構(gòu)建高性能異步服務(wù)的理想選擇,并且支持 HTTP 和 WebSockets。

Django ChannelsASGI 規(guī)范最初是設(shè)計(jì)就是用于 Django Channels 的。Channels 與其他ASGI框架略有不同,它在線程框架后端上提供了異步前端。同時(shí) Django Channels 支持 WebSocket,后臺(tái)任務(wù)和長(zhǎng)期運(yùn)行的連接,而應(yīng)用程序代碼仍在標(biāo)準(zhǔn)線程上下文中運(yùn)行

QuartQuart 是一個(gè)類似于 Flask 的 ASGI Web 框架。Quart 不僅與 Flask 相似,而且與 Flask API 兼容!該框架的作者希望保留了Flask 的風(fēng)格,只是向其中添加異步、WebSocket 和 HTTP 2支持。因此,你可以從 Flask 文檔中學(xué)習(xí) Quart 的用法,只需要記住 Quart 中的函數(shù)是異步的就行。

一個(gè)簡(jiǎn)單的 Quart 服務(wù):

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

和 Flask 是不是很像,只是多了一個(gè)異步 async由于 Quart 是從 Flask 中演進(jìn)過(guò)來(lái)的,因此 Flask 的所有功能均可用:路由,中間件,會(huì)話,模板,藍(lán)圖等

ASGI服務(wù)器

Uvicorn 是一個(gè)快速的 ASGI 服務(wù)器,Uvicorn 是基于 uvloop 和 httptools 構(gòu)建的,是 Python 異步生態(tài)中重要的一員。Uvicorn 當(dāng)前支持 HTTP / 1.1 和 WebSockets,將來(lái)計(jì)劃支持HTTP / 2。版本要求 Python 3.5 以上,Uvicorn 的安裝,

pip install uvicorn

示例如下:

async def app(scope, receive, send): assert scope[’type’] == ’http’ await send({’type’: ’http.response.start’,’status’: 200,’headers’: [ [b’content-type’, b’text/plain’],] }) await send({’type’: ’http.response.body’,’body’: b’Hello, world!’, })

運(yùn)行命令如下,

uvicorn demo:app服務(wù)啟動(dòng)之后,我們通過(guò)瀏覽器就能方位該服務(wù),默認(rèn)端口 8000

DaphneDaphne 服務(wù)器是最早為 Django Channels 提供支持的 ASGI 服務(wù)器Daphne 它在生產(chǎn)中廣泛運(yùn)行,并支持HTTP / 1.1,HTTP / 2和 WebSockets。

安裝和運(yùn)行的命令如下:

pip install daphne daphne app:App和 uvicorn 命令類似,app 是文件名稱,APP 是應(yīng)用程序

HypercornHypercorn 最初是框架 Quart 的一部分,然后被分離為獨(dú)立的 ASGI 服務(wù)器同樣的,Hypercorn 支持 HTTP/1.1, HTTP/2, 以及 WebSockets.安裝和運(yùn)行的命令如下:pip install hypercorn hypercorn app:App

FastAPI

FastAPI 是一個(gè)基于 Starlette 和 Pydantic 的 API 框架,其靈感來(lái)自以前的 APISta 服務(wù)器版本使用 Python 3.6+ 類型聲明編寫(xiě) API 函數(shù)參數(shù),并獲得自動(dòng)數(shù)據(jù)轉(zhuǎn)換,數(shù)據(jù)驗(yàn)證。FastApi 最主要的特點(diǎn)是快,非常高的性能,向 NodeJS 和 Go 看齊,現(xiàn)有最快的Python框架之一同時(shí)它可以自動(dòng)生成交互式 API 文檔 UI,編寫(xiě) API 接口后,你就可以使用符合標(biāo)準(zhǔn)的 UI 如 SwaggerUI,ReDoc 等來(lái)使用 API。

其特點(diǎn)如下:

快速:擁有非常高的性能,歸功于 Starlette 和 Pydantic;Starlette 用于路由匹配,Pydantic 用于數(shù)據(jù)驗(yàn)證 開(kāi)發(fā)效率:功能開(kāi)發(fā)效率提升 200% 到 300% 減少 bug:減少 40% 的因?yàn)殚_(kāi)發(fā)者粗心導(dǎo)致的錯(cuò)誤 智能:內(nèi)部的類型注解非常完善,編輯器可處處自動(dòng)補(bǔ)全 簡(jiǎn)單:框架易于使用,文檔易于閱讀 簡(jiǎn)短:使代碼重復(fù)最小化,通過(guò)不同的參數(shù)聲明實(shí)現(xiàn)豐富的功能 健壯:可以編寫(xiě)出線上使用的代碼,并且會(huì)自動(dòng)生成交互式文檔 標(biāo)準(zhǔn)化:兼容 API 相關(guān)開(kāi)放標(biāo)準(zhǔn) 它使用了 Python 的類型注解

示例如下:

先安裝依賴的庫(kù)

pip install fastapipip install uvicorn

import uvicornfrom fastapi import FastAPI# 類似于 app = Flask(__name__)app = FastAPI()# 綁定路由和視圖函數(shù)@app.get('/')async def root(): return {'message': 'Hi juejin'}# 在 Windows 中必須加上 if __name__ == '__main__',否則會(huì)拋出 RuntimeError: This event loop is already runningif __name__ == ’__main__’: # 啟動(dòng)服務(wù),因?yàn)槲覀冞@個(gè)文件叫做 main.py,所以需要啟動(dòng) main.py 里面的 app # 第一個(gè)參數(shù) 'main:app' 就表示這個(gè)含義,然后是 host 和 port 表示監(jiān)聽(tīng)的 ip 和端口 uvicorn.run(app=’main:app’, host='127.0.0.1', port=8000, reload=True, debug=True)

FastAPI 的幾大功能:類型檢查、自動(dòng) swagger UI、支持 asyncio、強(qiáng)大的依賴注入系統(tǒng)

總結(jié)

性能提升注: 以下針對(duì)生產(chǎn)環(huán)境的大型項(xiàng)目而言fastapi利用異步和輕量級(jí)的特點(diǎn),大大提升了性能。但異步應(yīng)用到實(shí)際中,并不是一件容易的事。fastapi的異步不算難寫(xiě),邏輯不復(fù)雜的話,閉著眼睛加幾個(gè)await很簡(jiǎn)單。但如果涉及到復(fù)雜系統(tǒng)。一處異步,處處異步。到底要不要用可能就見(jiàn)仁見(jiàn)智了。輕量級(jí)同時(shí)也代表著和flask一樣,很多東西需要自己diy。而不是像django一樣一站式解決。所以fastapi可能逐漸接過(guò)flask的位置,但還是難以對(duì)django發(fā)起挑戰(zhàn)。最重要的一點(diǎn)還是,選了python作為后端。可能打一開(kāi)始就不是對(duì)性能有多敏感。而是看中python的開(kāi)發(fā)效率和生態(tài)。如果從兼顧開(kāi)發(fā)效率+性能的角度出發(fā),那么fastapi極大程度上會(huì)遇到來(lái)自go的強(qiáng)力競(jìng)爭(zhēng)。只有再兼顧上python現(xiàn)有生態(tài),fastapi才會(huì)有很大的優(yōu)勢(shì)。我們可以假想一個(gè)現(xiàn)有python項(xiàng)目,遇到了性能瓶頸,但不想脫離python的環(huán)境,或者不想承受更換語(yǔ)言的成本。那么fastapi是個(gè)很好的未來(lái)。

API文檔、類型檢測(cè)以及依賴注入fastapi完全擁抱了typing類型系統(tǒng),高度整合了openapi(swagger ui),正如他的名字一樣fastapi,從api開(kāi)發(fā)的角度來(lái)說(shuō),無(wú)論是性能還是開(kāi)發(fā)效率,它都足夠“fast”。為api文檔提供了非常多的支持。無(wú)需任何配置,后端只要把endpoint寫(xiě)出來(lái),一份詳盡的api文檔就會(huì)自動(dòng)生成。對(duì)于小型項(xiàng)目來(lái)說(shuō)絕對(duì)是巨大優(yōu)勢(shì)。類型檢測(cè)和依賴注入是api文檔的基石 ,它們重點(diǎn)在于圍繞框架的“感知力”。inspect抓endpoint的參數(shù),明確的知道每個(gè)api接口需要什么,返回什么。這會(huì)讓你感覺(jué)這個(gè)框架真的很有靈性。對(duì)于這方面我個(gè)人絕對(duì)是贊不絕口的。

簡(jiǎn)單與簡(jiǎn)潔會(huì)用flask就會(huì)fastapi,fastapi的學(xué)習(xí)曲線十分平滑。從下至上有很多值得學(xué)習(xí)參透的。非常建議有空的同學(xué)過(guò)一遍starlette,uvicorn,fastapi的源碼。加起來(lái)也沒(méi)有django多。

相關(guān)生態(tài)和社區(qū)還未成熟python的異步發(fā)展略為緩慢,僅僅fastapi還不能撐起一片天。例如現(xiàn)在還沒(méi)有完全可靠的異步orm。不少東西還需要自己造輪子。在小項(xiàng)目上,這可能影響不是很大。直接寫(xiě)代碼可能比配置插件來(lái)的快。但將很大程度上影響它被采用到線上生產(chǎn)環(huán)境。總結(jié)你可以將fastapi看成新出爐的flask plus。如果你有采用flask的理由,那么你同樣有將來(lái)采用fastapi的理由。

到此這篇關(guān)于python異步的ASGI與Fast Api實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)python異步的ASGI與Fast Api內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Python 編程
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲国产福利| 日韩av午夜在线观看| 免费亚洲婷婷| 日韩精品五月天| 日本视频一区二区| 国产精品久久久久久久久久白浆 | 亚洲97av| 中文字幕av一区二区三区四区| 一区二区日韩免费看| 日韩国产高清在线| 国产精品亚洲产品| 国产精品99一区二区三区| 日韩欧美二区| 亚洲国产日韩欧美在线| 免费在线观看日韩欧美| 97se亚洲| 精品视频高潮| 不卡av一区二区| 蜜桃久久精品一区二区| 国产欧美日韩精品一区二区三区| 九九99久久精品在免费线bt| 久久天堂av| 极品裸体白嫩激情啪啪国产精品| 亚洲女人av| 国产精品一区二区三区av| 国产成人精品一区二区三区在线| 久久久久久久久丰满| 老司机精品久久| 国产无遮挡裸体免费久久| 黄在线观看免费网站ktv| 亚洲国内欧美| 亚洲3区在线| 精品久久97| 国产视频一区三区| 国产精品视频一区二区三区| 女生影院久久| 中文字幕日韩亚洲| 国产高清视频一区二区| 国产99亚洲| 97精品资源在线观看| 波多野结衣久久精品| 日韩中文字幕91| 免费日韩一区二区三区| 欧美日韩中文一区二区| 7777精品| 国产专区一区| 日韩在线成人| 欧美另类专区| 黑丝一区二区三区| 亚洲综合专区| 精品亚洲成人| 亚洲一区亚洲| 国产另类在线| 99香蕉国产精品偷在线观看| 国产精东传媒成人av电影| 亚洲欧美一区在线| 国产精品手机在线播放| 狠狠干成人综合网| 精品少妇av| 色8久久久久| 欧美三级网址| 国产日韩一区二区三区在线| 91精品观看| 国产videos久久| 婷婷亚洲成人| 午夜免费一区| 久久中文字幕一区二区| 国产一区二区高清| av免费不卡国产观看| 亚洲精品极品| 久久精品卡一| 国产成人免费精品| 日韩二区在线观看| 9色国产精品| 日本免费一区二区三区四区| 97精品久久| 男女男精品网站| 亚洲国产专区校园欧美| 精品五月天堂| 欧美自拍一区| 在线精品亚洲| av亚洲在线观看| 国产传媒在线| 老鸭窝一区二区久久精品| 亚洲精品在线二区| 老牛国产精品一区的观看方式| 亚洲h色精品| 国产在线一区不卡| 国产精品亚洲产品| 日韩不卡免费视频| 亚洲日本国产| 久热re这里精品视频在线6| 国产一区日韩一区| 欧洲在线一区| 鲁鲁在线中文| 91一区二区三区四区| 精品一区91| 久久av超碰| 国产精品欧美一区二区三区不卡| 日韩高清二区| 日韩精品乱码av一区二区| 乱人伦精品视频在线观看| 伊人久久亚洲热| 亚洲激情偷拍| 亚洲制服少妇| 日韩中文字幕亚洲一区二区va在线| 蜜臀久久99精品久久一区二区 | 日韩一区电影| 欧美一级鲁丝片| 精品国产网站| 精品美女在线视频| 电影91久久久| 国产精品原创| 91看片一区| 日韩在线高清| 久久精品高清| 欧美美女一区| 欧美一区二区性| 激情综合在线| 99热精品在线观看| 久久亚洲电影| 视频一区日韩| 国产亚洲观看| 久久中文精品| 国产成人精品福利| 开心激情综合| 国产精品yjizz视频网| 中文字幕人成乱码在线观看| 国产麻豆久久| 精品日韩毛片| 天使萌一区二区三区免费观看| 久久福利毛片| 日韩av中文在线观看| 国产精品高潮呻吟久久久久| 久久中文精品| 欧洲av一区二区| av不卡在线| 五月激激激综合网色播| 国产伦理久久久久久妇女| 激情久久99| 日韩高清成人| 妖精视频成人观看www| 中文字幕亚洲精品乱码| 日本亚洲欧美天堂免费| 国产精品黄色| 日韩欧美一区二区三区在线视频 | 热久久国产精品| 欧美日韩亚洲一区| 精品国产亚洲一区二区三区大结局 | 亚洲精品在线a| 国产麻豆精品久久| 成人日韩在线观看| 蜜桃91丨九色丨蝌蚪91桃色| 日本视频在线一区| 久久久久久一区二区| 欧美久久精品一级c片| 日韩中出av| 日本精品黄色| 国产亚洲精品v| 国产亚洲精品美女久久久久久久久久| 精品亚洲成人| 夜夜嗨av一区二区三区网站四季av| 无码日韩精品一区二区免费| 国产精品成人国产| 亚洲天堂成人| 91精品日本| 色婷婷久久久| 日本成人一区二区| 国产拍在线视频| 亚洲视频国产精品| 日韩综合在线| 亚洲人成网77777色在线播放| 国产精品一区二区精品视频观看 | 999国产精品永久免费视频app| 天堂av在线一区| 久久精品国内一区二区三区| 不卡在线一区二区| 国产精品1区在线| 午夜久久影院| 美女高潮久久久| 欧美资源在线| 四虎国产精品免费观看| 免费看黄色91| 欧美aa一级| 国产欧美一区| 夜夜嗨一区二区| 国产精品成人一区二区网站软件| 久久久一二三| 国产日韩欧美高清免费| 欧美日韩国产传媒| 麻豆91小视频| 亚洲人成亚洲精品| 久久精品亚洲欧美日韩精品中文字幕| 日本成人一区二区| 红桃视频欧美| 在线看片福利| 国产精品久久久亚洲一区| 在线综合亚洲| 精品捆绑调教一区二区三区| 欧美精品三级在线|