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

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

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

瀏覽:153日期: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 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲精品福利电影| 久久精品国产99国产精品| 高潮久久久久久久久久久久久久| 国产精品.xx视频.xxtv| 国产三级精品三级在线观看国产| 国产亚洲字幕| 麻豆成人91精品二区三区| 欧美国产极品| 国产精品magnet| 国产成人免费| 国产专区一区| 91久久中文| 日韩精品午夜视频| 亚洲精选av| 国产免费av国片精品草莓男男| 久久天堂影院| 精品日韩毛片| 91精品丝袜国产高跟在线| 精品国产精品国产偷麻豆| 欧美精品资源| 日韩**一区毛片| 亚洲一级少妇| 在线精品观看| 日本一区二区免费高清| 亚洲一区网站| 麻豆一区二区三| 欧美一区三区| 国产日韩欧美在线播放不卡| 精品午夜av| 夜久久久久久| 国产精品第十页| 午夜日韩在线| 国产精品xxx在线观看| 精品一区免费| 国产欧美精品| 欧美日韩四区| 国产一区二区三区精品在线观看| 国产亚洲福利| 国产成人精品亚洲线观看| 天堂成人国产精品一区| 精品国产a一区二区三区v免费| 日韩一级欧洲| 亚洲精品永久免费视频| 久久不射中文字幕| 在线亚洲人成| 欧美精品中文字幕亚洲专区| 亚洲激情中文| 国产夫妻在线| 国产精品一区二区99| 久久国产精品99国产| 国产videos久久| 日韩综合一区二区| 激情婷婷综合| 久久不卡日韩美女| 99亚洲视频| 免费污视频在线一区| 美腿丝袜亚洲一区| 热久久久久久久| 日韩av自拍| 人人爱人人干婷婷丁香亚洲| 久久精品高清| 女生影院久久| 精品一二三区| 欧美精品99| 青青伊人久久| 久久午夜影视| 婷婷六月综合| 久久五月天小说| 日韩av片子| 欧美国产视频| 日韩精品国产精品| 99国产精品久久久久久久| 在线天堂中文资源最新版| 国产精品久一| 亚洲欧洲美洲国产香蕉| 婷婷中文字幕一区| 亚洲成人精品| 亚洲精品.com| 日本精品影院| 偷拍精品精品一区二区三区| 美女视频网站久久| 欧美激情五月| 你懂的国产精品| 免费一区二区三区在线视频| 国产欧美一区二区色老头| 欧美精品观看| 国产精品久久久久久久久久妞妞| 青青草伊人久久| 亚洲精品高潮| 日韩精品a在线观看91| 日韩中文字幕视频网| 亚洲人成网站在线在线观看| 丝袜a∨在线一区二区三区不卡| 美女尤物久久精品| 亚洲精品伦理| 91精品国产经典在线观看| 欧美片第1页综合| 国产精品久久久久久久久久妞妞| 国产精品一区二区三区美女 | 国产精品资源| 国产精品男女| 久久精品亚洲一区二区| 国产精东传媒成人av电影| 久久久国产精品网站| 国产一区二区精品久| sm捆绑调教国产免费网站在线观看| 国产suv精品一区二区四区视频| 国内不卡的一区二区三区中文字幕| 国产一区二区三区免费在线| 中文字幕在线视频网站| 欧洲亚洲一区二区三区| 999久久久国产精品| 欧美精品九九| 日韩国产精品久久久久久亚洲| 国产探花一区| 久久久久久色 | 欧美日韩四区| 中文字幕日本一区二区| 久久国产日韩欧美精品| 麻豆国产91在线播放| 中文字幕在线看片| 欧美日韩国产综合网| 美国三级日本三级久久99| 日韩av午夜在线观看| 麻豆高清免费国产一区| 四虎884aa成人精品最新| 国产一区亚洲| 日韩精品久久久久久| 欧美国产小视频| 日韩影院精彩在线| 国产日韩中文在线中文字幕| 精品国产乱码久久久久久樱花| 欧美成人久久| 日韩福利在线观看| 色黄视频在线观看| 午夜亚洲福利| av免费不卡国产观看| 日韩天堂av| 久久久久亚洲精品中文字幕| 午夜久久福利| 国产精品草草| 欧美日韩国产免费观看| 国产精品一区二区精品视频观看| 日韩欧美三级| 视频一区中文字幕精品| 粉嫩av一区二区三区四区五区 | 中文在线а√在线8| 欧美中文字幕| 精品一区二区三区免费看| 亚洲一区二区成人| 国产精品久久久久久久久久妞妞| 久久久天天操| 日韩精品中文字幕一区二区| 亚洲日本网址| 国产欧美高清| 在线视频精品| 91亚洲国产| 国产免费播放一区二区| 99热精品在线| 国产乱码午夜在线视频| 视频精品一区| 亚洲精品一区二区妖精| 免费日韩一区二区三区| 亚洲另类黄色| 欧美天堂亚洲电影院在线观看| 久久精品天堂| 国产亚洲电影| 欧美日韩视频| 欧美日韩国产观看视频| 91精品国产自产精品男人的天堂 | 亚洲精品大全| 欧美1区2区3区| 久久男人天堂| 久久亚洲人体| 欧美一区在线观看视频| 亚洲一区观看| 欧美日韩中文一区二区| 欧美激情aⅴ一区二区三区| 亚洲少妇诱惑| 国模 一区 二区 三区| 伊人久久在线| 国产在线不卡一区二区三区| 欧美伊人影院| 日本伊人午夜精品| 在线免费观看亚洲| 亚洲欧美日韩国产综合精品二区| 久久精品主播| 日韩中文影院| 高潮久久久久久久久久久久久久| 国产日韩一区| 国产精品亚洲欧美| 国产欧美高清| 国产精品视频3p| 中文字幕一区二区三区四区久久 | 成人看片网站| 欧美日韩在线观看首页| 风间由美中文字幕在线看视频国产欧美| 久久狠狠久久| 国产精品99精品一区二区三区∴| 91精品国产一区二区在线观看|