
Awesome-Asyncio-CN
原文地址:Awesome-asyncio
譯者:陳鍵冬
校譯:呆鳥
Python Asyncio 精選資源列表,囊括了網(wǎng)絡(luò)框架,庫,軟件等資源。
Awesome-asyncio 是 Timo Furrer 發(fā)起并維護(hù)的 Python Asyncio 資源列表。本項目是其中文版,在這里,收集了大量的 Asyncio 的最棒、最新的資源,供大家探索 Python 異步編程世界。
Python 3.4 引入了 Asyncio 模塊作為標(biāo)準(zhǔn)庫,通過協(xié)程、多路 I/O 訪問 Socket 和其他資源來編寫單線程并發(fā)代碼,并在網(wǎng)絡(luò)客戶端與服務(wù)器上運行。Asyncio 內(nèi)置了對異步 I/O 的支持,其編程模型類似于消息循環(huán),從 Asyncio 模塊可以直接獲取 EventLoop 引用,再把需要執(zhí)行的協(xié)程放到 EventLoop 中執(zhí)行,就實現(xiàn)了異步 I/O。Asyncio 是由 Python 之父 Guido 領(lǐng)導(dǎo)的項目,該項目被命名為 Tulip(郁金香)。
Asyncio 并不是新出現(xiàn)的黑科技,一些社區(qū)有名的第三庫如 Twisted、gevent 早就推出了異步編程模型。不過,自從 2016 年 3 月,Python 3.4 推出以后,這兩年來,Asyncio 變得越來越流行,并且特別受到 Python 社區(qū)追捧。
貢獻(xiàn)代碼
歡迎大家為列表貢獻(xiàn)高質(zhì)量的新資源,提交 PR 時請參照以下要求
注明推薦理由
確保項目相對活躍
目錄
Web框架
構(gòu)建 Web 應(yīng)用的庫
aiohttp - 支持 Asyncio (PEP-3156) 的 HTTP 客戶端/服務(wù)端網(wǎng)絡(luò)庫。
sanic - Python 3.5+ Web 服務(wù)器,主打速度與性能。
Quart - 支持 Asyncio 的 Web 微框架,使用與 Flask 相同的 API。
Kyoukai - 使用 Asyncio 編寫的 Python3.5+ 完全異步 Web 框架。
cirrina - 基于 aiohttp 的異步 Web 框架。
autobahn - 支持 Asyncio 與 Twisted 的 WebSocket 及 WAMP,用于客戶端與服務(wù)端。
websockets - Python 構(gòu)建的 WebSocket 客戶端/服務(wù)端的庫,致力于簡潔、正確地編寫代碼。
Tornado - 高性能 Web 框架以及異步網(wǎng)絡(luò)庫。
Japronto! - 基于 uvloop 和 picohttpparse 構(gòu)建的實驗性 HTTP 工具箱。
消息隊列
使用消息隊列執(zhí)行應(yīng)用的庫
aioamqp - 使用 Asyncio 異步執(zhí)行 AMQP。
aiozmq - 集成了 Asyncio (pep 3156) 的 ZeroMQ。
crossbar - Crossbar.io 是提供分布式和微服務(wù)應(yīng)用的網(wǎng)絡(luò)平臺。
數(shù)據(jù)庫驅(qū)動
數(shù)據(jù)庫的驅(qū)動庫
asyncpg - 快速訪問 PostgreSQL 數(shù)據(jù)庫客戶端的異步驅(qū)動。
asyncpgsa - 提供 Sqlalchemy Core 支持的 Asyncpg。
aiopg - 訪問 PostgreSQL 數(shù)據(jù)庫的異步驅(qū)動。
aiomysql - 訪問 MySQL 數(shù)據(jù)庫的異步驅(qū)動。
aioodbc - 訪問 ODBC 數(shù)據(jù)庫的異步驅(qū)動。
motor - 訪問 MongoDB 數(shù)據(jù)庫的異步驅(qū)動。
asyncio-redis - 訪問 Redis 客戶端 (PEP 3156)的異步驅(qū)動。
aiocouchdb - 基于 aiohttp (Asyncio) 構(gòu)建的 CouchDB 客戶端。
aioinflux - 基于 aiohttp 構(gòu)建的 InfluxDB 客戶端。
aioes - 兼容 elasticsearch 的 Asyncio 驅(qū)動。
peewee-async - 基于 peewee 和 aiopg 實現(xiàn)的 ORM。
GINO - 基于 SQLAlchemy Core 和 asyncpg 方言的輕量級 Python 異步 ORM。
aiocache - 支持多個后端 (Memory、Redis 和 Memcached) 的 Asyncio 緩存管理器。
aiomcache - 訪問 Memcached 的 Asyncio(PEP 3156) 驅(qū)動庫。
網(wǎng)絡(luò)
網(wǎng)絡(luò)通訊庫
AsyncSSH - 提供執(zhí)行 SSHv2 協(xié)議的異步客戶端/服務(wù)端。
aioftp - 基于 Asyncio 的 ftp 服務(wù)。
aiodns - 簡單的 Asyncio DNS 服務(wù)解析器。
websockets 構(gòu)建于 Asyncio 之上的異步 websockets 庫。
測試
測試 Asyncio 應(yīng)用程序的庫
aiomock - 支持異步的 Python mock 庫。
asynctest - 一個增強(qiáng)標(biāo)準(zhǔn) unittest 包的測試庫。
pytest-asyncio - 支持 Asyncio 的 Pytest 庫。
aioresponses - 一個適用于 aiohttp 的模擬請求庫。
備選事件循環(huán)
備選的 Asyncio 循環(huán)庫
uvloop - 基于 libuv 實現(xiàn)的 Asyncio 事件循環(huán)庫。
curio - 協(xié)程并發(fā)庫。
trio - 人性化的,Pythonic 的異步 IO 庫。
并行
并行異步編程的庫
aioprocessing - 結(jié)合 multiprocessing 與 Asyncio 的進(jìn)程庫,支持 Python3.4+。
aiomultiprocess - 進(jìn)一步提升異步性能的多進(jìn)程庫。
其他
未歸類的優(yōu)秀 Asnycio 庫
aiofiles - 基于 Asyncio,支持文件異步操作。
aiodebug - 用于監(jiān)控和測試 Asyncio 程序的微型庫。
aiorun - 提供處理通用 Asyncio 樣板,啟動和關(guān)閉事件驅(qū)動的
run函數(shù)。aiozipkin - 使用 zipkin 的分布式 Asyncio 追蹤測量儀。
faust - 純 Python 的流處理庫,用于處理流數(shù)據(jù)和事件。
paco - 協(xié)程驅(qū)動的異步編程的工具庫 (Python3.4+)。
文獻(xiàn)
關(guān)于 Asyncio 的文檔、博客等文獻(xiàn)
Asyncio 官方文檔 - 介紹了異步 I/O、事件循環(huán)、協(xié)程及任務(wù)等內(nèi)容。
Asyncio 精編簡介 - 生成器,協(xié)程,原生協(xié)程及 async/await。
異步窺探 - 非常好的一篇文章,列出了哪些用例應(yīng)該使用 Asyncio ,哪些用例無需使用 Asyncio。
異步 Python - 介紹如何進(jìn)行 Python 異步編程。
用 Asyncio 進(jìn)行 Python 開發(fā) - 介紹異步編程的開發(fā),從簡單示例說起,一直到 URL 爬取。
Python Aiohttp 的測試極限 - 使用 Python Aiohttp 進(jìn)行百萬量級的并發(fā)測試。
演講
關(guān)于 Asyncio 的主題演講
Topics of Interest (Python Asyncio) - David Beazley 的主題演講。
Python Asynchronous I/O Walkthrough - Philip Guo 的主題演講。
Thinking Outside the GIL with AsyncIO and Multiprocessing - John Reese 的主題演講
Asynchronous Python for the Complete Beginner - Miguel Grinberg 的主題演講