电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

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

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

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

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

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

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

您可以使用 Uvicorn,Daphne 或 Hypercorn 運行任何 ASGI 框架

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

Python 中有以下幾個支持 ASGI 的異步框架

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

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

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

一個簡單的 Quart 服務(wù):

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

和 Flask 是不是很像,只是多了一個異步 async由于 Quart 是從 Flask 中演進過來的,因此 Flask 的所有功能均可用:路由,中間件,會話,模板,藍圖等

ASGI服務(wù)器

Uvicorn 是一個快速的 ASGI 服務(wù)器,Uvicorn 是基于 uvloop 和 httptools 構(gòu)建的,是 Python 異步生態(tài)中重要的一員。Uvicorn 當(dāng)前支持 HTTP / 1.1 和 WebSockets,將來計劃支持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!’, })

運行命令如下,

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

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

安裝和運行的命令如下:

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

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

FastAPI

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

其特點如下:

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

示例如下:

先安裝依賴的庫

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__',否則會拋出 RuntimeError: This event loop is already runningif __name__ == ’__main__’: # 啟動服務(wù),因為我們這個文件叫做 main.py,所以需要啟動 main.py 里面的 app # 第一個參數(shù) 'main:app' 就表示這個含義,然后是 host 和 port 表示監(jiān)聽的 ip 和端口 uvicorn.run(app=’main:app’, host='127.0.0.1', port=8000, reload=True, debug=True)

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

總結(jié)

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

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

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

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

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

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 海南在线 海南一家| 地图标注-手机导航电子地图如何标注-房地产商场地图标记【DiTuBiaoZhu.net】 | 铁盒_铁罐_马口铁盒_马口铁罐_铁盒生产厂家-广州博新制罐 | 衡阳耐适防护科技有限公司——威仕盾焊接防护用品官网/焊工手套/焊接防护服/皮革防护手套 | 众能联合-提供高空车_升降机_吊车_挖机等一站工程设备租赁 | 论文查重_免费论文查重_知网学术不端论文查重检测系统入口_论文查重软件 | 充气膜专家-气膜馆-PTFE膜结构-ETFE膜结构-商业街膜结构-奥克金鼎 | 塑胶跑道_学校塑胶跑道_塑胶球场_运动场材料厂家_中国塑胶跑道十大生产厂家_混合型塑胶跑道_透气型塑胶跑道-广东绿晨体育设施有限公司 | 工业冷却塔维修厂家_方形不锈钢工业凉水塔维修改造方案-广东康明节能空调有限公司 | 恒温恒湿试验箱厂家-高低温试验箱维修价格_东莞环仪仪器_东莞环仪仪器 | 加中寰球移民官网-美国移民公司,移民机构,移民中介,移民咨询,投资移民 | 宏源科技-房地产售楼系统|线上开盘系统|售楼管理系统|线上开盘软件 | 耐高温电缆厂家-远洋高温电缆| 探鸣起名网-品牌起名-英文商标起名-公司命名-企业取名包满意 | 减速机_上海宜嘉减速机| 宝宝药浴-产后药浴-药浴加盟-艾裕-专注母婴调养泡浴 | 六维力传感器_六分量力传感器_模腔压力传感器-南京数智微传感科技有限公司 | 飞利浦LED体育场灯具-吸顶式油站灯-飞利浦LED罩棚灯-佛山嘉耀照明有限公司 | 气动调节阀,电动调节阀,自力式压力调节阀,切断阀「厂家」-浙江利沃夫自控阀门 | OLChemim试剂-ABsciex耗材-广州市自力色谱科仪有限公司 | 胶泥瓷砖胶,轻质粉刷石膏,嵌缝石膏厂家,腻子粉批发,永康家德兴,永康市家德兴建材厂 | 深圳公司注册-工商注册代理-注册公司流程和费用_护航财税 | 德国EA可编程直流电源_电子负载,中国台湾固纬直流电源_交流电源-苏州展文电子科技有限公司 | 北京易通慧公司从事北京网站优化,北京网络推广、网站建设一站式服务商-北京网站优化公司 | 杭州门窗厂家_阳光房_包阳台安装电话-杭州窗猫铝合金门窗 | 光泽度计_测量显微镜_苏州压力仪_苏州扭力板手维修-苏州日升精密仪器有限公司 | CNC机加工-数控加工-精密零件加工-ISO认证厂家-鑫创盟 | 广东之窗网 | 珠海冷却塔降噪维修_冷却塔改造报价_凉水塔风机维修厂家- 广东康明节能空调有限公司 | 济南品牌包装设计公司_济南VI标志设计公司_山东锐尚文化传播 | 高楼航空障碍灯厂家哪家好_航空障碍灯厂家_广州北斗星障碍灯有限公司 | 对照品_中药对照品_标准品_对照药材_「格利普」高纯中药标准品厂家-成都格利普生物科技有限公司 澳门精准正版免费大全,2025新澳门全年免费,新澳天天开奖免费资料大全最新,新澳2025今晚开奖资料,新澳马今天最快最新图库 | 智能汉显全自动量热仪_微机全自动胶质层指数测定仪-鹤壁市科达仪器仪表有限公司 | 福州仿石漆加盟_福建仿石漆厂家-外墙仿石漆加盟推荐铁壁金钢(福建)新材料科技有限公司有保障 | 流量检测仪-气密性检测装置-密封性试验仪-东莞市奥图自动化科技有限公司 | YJLV22铝芯铠装电缆-MYPTJ矿用高压橡套电缆-天津市电缆总厂 | 细砂提取机,隔膜板框泥浆污泥压滤机,螺旋洗砂机设备,轮式洗砂机械,机制砂,圆锥颚式反击式破碎机,振动筛,滚筒筛,喂料机- 上海重睿环保设备有限公司 | 鑫达滑石-辽宁鑫达滑石集团| 滁州高低温冲击试验箱厂家_安徽高低温试验箱价格|安徽希尔伯特 | 电脑知识|软件|系统|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网 | 玖容气动液压设备有限公司-气液增压缸_压力机_增压机_铆接机_增压器 |