成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

python 常用的異步框架匯總整理

瀏覽:125日期:2022-06-16 11:41:45
目錄正文開始1. Tornado2. Aiohttp3.Sanic4. FastAPI5. Ruia總結參考資料正文開始

asyncio 是 Python 3.4版本引入的標準庫,直接內置了對異步IO的支持。

asyncio 在單線程內部維護了 EventLoop 隊列,然后把需要執行異步IO的任務添加到 EventLoop 隊列中,至于任務的完成通過類似回調的邏輯是實現后續的任務。如果你有 JavaScript的基礎那么理解python的 asyncio 很簡單,關鍵字、語法以及實現的原理都極其類似。

import asyncioasync def main(): print(’Hello ...’) await asyncio.sleep(1) print(’... World!’)# Python 3.7+asyncio.run(main())1. Tornado

Tornado 是一個Python web框架和異步網絡庫,起初由 FriendFeed 開發. 通過使用非阻塞網絡I/O, Tornado可以支撐上萬級的連接,處理 長連接, WebSockets ,和其他需要與每個用戶保持長久連接的應用。

下面貼上官方 demo :

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()2. Aiohttp

一個基于 asyncio 異步的web框架,支持 websocket,不需要寫回掉的代碼、有著豐富的生態、中間價等、開箱即用的服務端與客戶端。

下面貼上官方 demo :

# 客服端代碼import aiohttpimport asyncioasync def main(): async with aiohttp.ClientSession() as session:async with session.get(’http://python.org’) as response: print('Status:', response.status) print('Content-type:', response.headers[’content-type’]) html = await response.text() print('Body:', html[:15], '...')loop = asyncio.get_event_loop()loop.run_until_complete(main())

# 服務端代碼from aiohttp import webasync def handle(request): name = request.match_info.get(’name’, 'Anonymous') text = 'Hello, ' + name return web.Response(text=text)async def wshandle(request): ws = web.WebSocketResponse() await ws.prepare(request) async for msg in ws:if msg.type == web.WSMsgType.text: await ws.send_str('Hello, {}'.format(msg.data))elif msg.type == web.WSMsgType.binary: await ws.send_bytes(msg.data)elif msg.type == web.WSMsgType.close: break return wsapp = web.Application()app.add_routes([web.get(’/’, handle),web.get(’/echo’, wshandle),web.get(’/{name}’, handle)])if __name__ == ’__main__’: web.run_app(app)

aiohttp的生態:

aiohttp-session 為 aiohttp 服務提供 sessions支持,同時支持數據持久化數據庫。 aiohttp-debugtoolbar 為 aiohttp 提供調試的工具(記錄 asyncio 異常的堆棧信息)。 aiohttp-security 為aiohttp提供認證以及權限相關的插件。 aiohttp-devtools aiohttp開發工具,提供開發環境的部署、靜態資源的代理。 aiohttp-cors CORS 跨域認證支持。 aiohttp-sse 服務端事件的支持(一種服務端推送消息的服務)。 pytest-aiohttp pytest 測試框架的支持。 aiohttp-mako Mako 服務端模板渲染的支持。 aiohttp-jinja2 Jinja2 服務端模板渲染的支持(大名鼎鼎的flask的渲染引擎)。 aiozipkin 分布式系統中對服務追蹤,為微服務中延時問題提供數據支持。

aiohttp數據庫支持:

aiopg PostgreSQL異步支持。aiomysql MySql 異步支持。aioredis Redis 異步支持。asyncpg 另外一個對 PostgreSQL 異步支持,比 aiopg 效率高,但是 api 不通用。

3.Sanic

Sanic 是一個 Python 3.7+ 的基于 asyncio 的 web 服務器和web框架,目標是提供一種簡單的方法來啟動和運行一個易于構建、擴展和終極性能HTTP服務器,是一個比較類似 falsk 的異步web框架。

To provide a simple way to get up and running a highly performant HTTP server that is easy to build, to expand, and ultimately to scale.

官方demo:

from sanic import Sanicfrom sanic.response import jsonapp = Sanic('My Hello, world app')@app.route(’/’)async def test(request): return json({’hello’: ’world’})if __name__ == ’__main__’: app.run()4. FastAPI

FastAPI 是一個用于構建API的高性能web框架,基于Python3.6+并支持標準的 Python 類型提示。同時是最快的 Python web框架之一,可與 NodeJS 和 Go 比肩(主要歸功于 Starlette 和 Pydantic)。

from typing import Optionalfrom fastapi import FastAPIapp = FastAPI()@app.get('/')def read_root(): return {'Hello': 'World'}@app.get('/items/{item_id}')def read_item(item_id: int, q: Optional[str] = None): return {'item_id': item_id, 'q': q}# 啟動 uvicorn main:app --reload# pip install uvicorn[standard]5. Ruia

一個基于asyncio和aiohttp的異步爬蟲框架,目標在于讓開發者編寫爬蟲盡可能地方便快速。國人開發中文文檔的支持,方便快速的構建爬蟲項目,自定義HTML解析工具,快速獲取頁面數據。

官方demo:

import asynciofrom ruia import Item, TextField, AttrFieldclass HackerNewsItem(Item): target_item = TextField(css_select=’tr.athing’) title = TextField(css_select=’a.storylink’) url = AttrField(css_select=’a.storylink’, attr=’href’)async def test_item(): url = ’https://news.ycombinator.com/news?p=1’ async for item in HackerNewsItem.get_items(url=url):print(’{}: {}’.format(item.title, item.url))if __name__ == ’__main__’: # Python 3.7 Required. asyncio.run(test_item()) # For Python 3.6 # loop = asyncio.get_event_loop() # loop.run_until_complete(test_item())總結

隨著 python 社區對異步支持的愈發友好,異步框架的生態也愈發完善。Tornado 是我第一個接觸到的一步框架,現如今伴隨著最快 python web 框架之爭,Tornado也漸漸跌落神壇。但是至于誰是最快的并不重要,重要的是生態,避免重復造輪子才是重要的。

PS:

我記得之前了解 Sanic 的時候它還是基于 aiohttp 開發的 web 框架,現如今已經重構了大部分代碼,核心組件也都自己實現。 tornado 雖然語法過時了,但是應該是最成熟、最早以及文檔最多的一個異步框架。 之前用tornado的時候還需要造關于異步操作的輪子,現如今生態日趨完善。

最后如果你想使用異步的框架,那么記得所有的IO操作均需要異步操作實現,否則會大大影響性能。 (比如第三方的短信服務不能直接使用同步代碼的sdk )

參考資料

Aiohttp docs

Sanic 中文

Uvloop

Tornado 中文

以上就是python 常用的異步框架匯總整理的詳細內容,更多關于python異步框架匯總的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
伊人激情综合| 久久色在线视频| 色综合久久久久综合99| 久久亚洲免费视频| 国精产品一区一区三区mba视频| 亚洲成人资源| 2020日本不卡一区二区视频| 麻豆精品一区二区三区| 99亚洲视频| 国产精品久久久久婷婷二区次| 日韩 欧美一区二区三区| 欧美日韩p片| 日韩一区二区高清| 韩国成人在线视频| 久久精品人人做人人爽电影蜜月| 成人欧美一区二区三区| 午夜精彩国产免费不卡不顿大片| 欧美一区二区三区白人| 亚洲综合成人网| 欧美日本亚洲| 26uuu亚洲综合色欧美| 岛国av在线一区| 欧美日韩不卡一区二区| 日韩二区三区在线观看| 亚洲欧美春色| 《视频一区视频二区| 欧美日韩ab| 欧美韩国一区二区| 国产·精品毛片| 欧美精品欧美精品系列| 日本麻豆一区二区三区视频| 久久久综合香蕉尹人综合网| 亚洲一级片在线观看| 亚洲看片免费| 伊人夜夜躁av伊人久久| 一级成人国产| 555www色欧美视频| 亚洲精品日产精品乱码不卡| 国产一区日韩欧美| 中文一区在线播放| 欧美日韩国产三区| 久久精品亚洲乱码伦伦中文| 欧美高清不卡| 国产精品高清亚洲| 亚洲青色在线| 亚洲精品视频在线| 亚洲精品乱码| 欧美国产日韩精品免费观看| 欧美日韩18| ●精品国产综合乱码久久久久| 影音先锋一区| 一区二区三区在线视频观看| 亚洲另类视频| 亚洲国产乱码最新视频 | 午夜久久久久久久久久一区二区| 国产视频一区欧美| 亚洲国产毛片aaaaa无费看| 久久狠狠婷婷| 日韩av在线播放中文字幕| 91国偷自产一区二区三区成为亚洲经典 | 国产成人午夜视频| 欧美一区二区在线观看| 成人免费视频免费观看| 精品999在线播放| 色综合天天综合狠狠| 国产精品久久久久精k8| 亚洲视频在线二区| 日韩毛片视频在线看| 日韩视频二区| 亚洲va韩国va欧美va精品| 色婷婷国产精品综合在线观看| 青青草原综合久久大伊人精品优势| 91国在线观看| 国产精品18久久久久久久网站| 2017欧美狠狠色| 国产一区二区三区四区老人| 自拍偷拍国产精品| 色香色香欲天天天影视综合网| 韩国三级中文字幕hd久久精品| 日韩欧美国产午夜精品| 欧美在线资源| 亚洲自拍偷拍av| 色婷婷国产精品| 国产在线乱码一区二区三区| 欧美成人vps| 欧美特黄a级高清免费大片a级| 亚洲自拍都市欧美小说| 欧美在线影院一区二区| 国产精品夜夜嗨| 久久久综合精品| 亚洲欧洲在线一区| 国产日韩欧美综合在线| 99热这里只有精品8| 毛片av一区二区| 久久综合九色综合97婷婷女人| 黑丝一区二区| 亚洲成人一区二区在线观看| 欧美揉bbbbb揉bbbbb| 99视频在线观看一区三区| 一区视频在线播放| 欧美在线观看一二区| av高清久久久| 亚洲黄色在线视频| 欧洲精品视频在线观看| 99免费精品在线| 国产精品久久看| 91黄色激情网站| 91影视在线播放| 亚洲va欧美va天堂v国产综合| 看欧美日韩国产| 国产乱码精品一区二区三区五月婷| 欧美日韩在线播放三区| 欧美在线三级| 蜜臀久久99精品久久久久宅男| 国产精品乱码人人做人人爱 | 韩日欧美一区二区三区| 亚洲激情自拍视频| 久久奇米777| 在线综合亚洲欧美在线视频| 亚洲一区二区三区欧美| 欧美91大片| 国产老妇另类xxxxx| 香蕉成人伊视频在线观看| 中文字幕不卡在线播放| 69av一区二区三区| 色视频欧美一区二区三区| 亚洲国产精品一区二区第一页 | 日本精品免费观看高清观看| 国产精品播放| 成人短视频下载| 国产一区二区三区四| 日韩国产在线一| 亚洲免费观看视频| 国产日韩精品视频一区| 欧美一区二区三区视频在线| 日本电影亚洲天堂一区| 国产精品日韩欧美一区二区三区| 欧美精品色网| 91一区二区在线观看| 国产成人精品三级| 国内精品久久久久影院薰衣草| 日韩精品一区第一页| 亚洲综合999| 亚洲图片另类小说| 欧美高清在线视频| 国产三级精品视频| 久久影院午夜论| 日韩一区二区免费视频| 9191成人精品久久| 精品视频一区三区九区| 色一区在线观看| 久久精品综合| 亚洲欧美久久| 国产精品视频免费观看| 亚洲黄色成人久久久| 黄色日韩在线| 韩国自拍一区| 黄色国产精品| 狠狠入ady亚洲精品| 91蜜桃传媒精品久久久一区二区| caoporn国产精品| www.欧美亚洲| av中文一区二区三区| 成人a免费在线看| 成人av在线一区二区三区| 成人看片黄a免费看在线| 国产69精品久久久久毛片 | 国产酒店精品激情| 美女久久久精品| 久久国产三级精品| 久久 天天综合| 美女被吸乳得到大胸91| 日韩精品电影一区亚洲| 日韩中文字幕亚洲一区二区va在线| 亚洲国产日韩一区二区| 亚洲午夜精品在线| 亚洲一级电影视频| 偷拍自拍另类欧美| 丝袜美腿亚洲一区| 日本午夜精品一区二区三区电影| 日韩黄色片在线观看| 久久超级碰视频| 国产精品亚洲а∨天堂免在线| 国产精品一区二区男女羞羞无遮挡| 国内成人自拍视频| 国产成人免费av在线| 成人高清av在线| 色综合天天天天做夜夜夜夜做| 欧美69视频| 国模 一区 二区 三区| 亚洲日韩视频| 裸体一区二区| 米奇777在线欧美播放| 日本道精品一区二区三区| 欧美中文字幕一区二区三区亚洲| 欧美日韩亚洲不卡| 337p亚洲精品色噜噜| wwww国产精品欧美| 国产精品久久久久毛片软件| 亚洲乱码中文字幕综合|