异步IO驱动
<div class="show-content-free"><blockquote>
轉一篇關于Asyncio的資源帖。基本涵蓋了基于Asyncio的Python生態,非常適合用Python編寫高性能服務。可以和之前轉的駒神的文章結合看。如果想讓Python技能更上一層樓,強烈建議好好學習下這個資源列表!
Awesome-Asyncio-CNAwesome-Asyncio-CN
Awesome-Asyncio-CN Github 網址
Python Asyncio 精選資源列表,囊括了網絡框架,庫,軟件等資源
Awesome-asyncio 是 Timo Furrer 發起并維護的 Python Asyncio 資源列表。本項目是其中文版,在這里,收集了大量的 Asyncio 的最棒、最新的資源,供大家探索 Python 異步編程世界。
Python 3.4 引入了 Asyncio 模塊作為標準庫,通過協程、多路 I/O 訪問 Socket 和其他資源來編寫單線程并發代碼,并在網絡客戶端與服務器上運行。Asyncio 內置了對異步 I/O 的支持,其編程模型類似于消息循環,從 Asyncio 模塊可以直接獲取 EventLoop 引用,再把需要執行的協程放到 EventLoop 中執行,就實現了異步 I/O。Asyncio 是由 Python 之父 Guido 領導的項目,該項目被命名為 Tulip(郁金香)。
Asyncio 并不是新出現的黑科技,一些社區有名的第三庫如 Twisted、gevent 早就推出了異步編程模型。不過,自從 2016 年 3 月,Python 3.4 推出以后,這兩年來,Asyncio 變得越來越流行,并且特別受到 Python 社區追捧。
貢獻代碼
歡迎大家為列表貢獻高質量的新資源,提交 PR 時請參照以下要求
注明推薦理由
確保項目相對活躍
目錄
Web 框架
消息隊列
數據庫驅動
網絡
測試
備選事件循環
并行
其他
文獻
演講
Web框架
構建 Web 應用的庫
aiohttp - 支持 Asyncio (PEP-3156) 的 HTTP 客戶端/服務端網絡庫。
sanic - Python 3.5+ Web 服務器,主打速度與性能。
Quart - 支持 Asyncio 的 Web 微框架,使用與 Flask 相同的 API。
Kyoukai - 使用 Asyncio 編寫的 Python3.5+ 完全異步 Web 框架。
cirrina - 基于 aiohttp 的異步 Web 框架。
autobahn - 支持 Asyncio 與 Twisted 的 WebSocket 及 WAMP,用于客戶端與服務端。
websockets - Python 構建的 WebSocket 客戶端/服務端的庫,致力于簡潔、正確地編寫代碼。
Tornado - 高性能 Web 框架以及異步網絡庫。
Japronto! - 基于 uvloop 和 picohttpparse 構建的實驗性 HTTP 工具箱。
消息隊列
使用消息隊列執行應用的庫
aioamqp - 使用 Asyncio 異步執行 AMQP。
aiozmq - 集成了 Asyncio (pep 3156) 的 ZeroMQ。
crossbar - Crossbar.io 是提供分布式和微服務應用的網絡平臺。
數據庫驅動
數據庫的驅動庫
asyncpg - 快速訪問 PostgreSQL 數據庫客戶端的異步驅動。
asyncpgsa - 提供 Sqlalchemy Core 支持的 Asyncpg。
aiopg - 訪問 PostgreSQL 數據庫的異步驅動。
aiomysql - 訪問 MySQL 數據庫的異步驅動。
aioodbc - 訪問 ODBC 數據庫的異步驅動。
motor - 訪問 MongoDB 數據庫的異步驅動。
aioredis - aio-libs 提供的異步 Redis 客戶端 (PEP 3156)。
asyncio-redis - 訪問 Redis 客戶端 (PEP 3156)的異步驅動。
aiocouchdb - 基于 aiohttp (Asyncio) 構建的 CouchDB 客戶端。
aioinflux - 基于 aiohttp 構建的 InfluxDB 客戶端。
aioes - 兼容 elasticsearch 的 Asyncio 驅動。
peewee-async - 基于 peewee 和 aiopg 實現的 ORM。
GINO - 基于 SQLAlchemy Core 和 asyncpg 方言的輕量級 Python 異步 ORM。
aiocache - 支持多個后端 (Memory、Redis 和 Memcached) 的 Asyncio 緩存管理器。
aiomcache - 訪問 Memcached 的 Asyncio(PEP 3156) 驅動庫。
網絡
網絡通訊庫
AsyncSSH - 提供執行 SSHv2 協議的異步客戶端/服務端。
asks - 與 requests 接口相似的異步 HTTP 庫。
aioftp - 基于 Asyncio 的 ftp 服務。
aiodns - 簡單的 Asyncio DNS 服務解析器。
websockets 構建于 Asyncio 之上的異步 websockets 庫。
測試
測試 Asyncio 應用程序的庫
aiomock - 支持異步的 Python mock 庫。
asynctest - 一個增強標準 unittest 包的測試庫。
pytest-asyncio - 支持 Asyncio 的 Pytest 庫。
aioresponses - 一個適用于 aiohttp 的模擬請求庫。
備選事件循環
備選的 Asyncio 循環庫
uvloop - 基于 libuv 實現的 Asyncio 事件循環庫。
curio - 協程并發庫。
trio - 人性化的,Pythonic 的異步 IO 庫。
并行
并行異步編程的庫
aioprocessing - 結合 multiprocessing 與 Asyncio 的進程庫,支持 Python3.4+。
aiomultiprocess - 進一步提升異步性能的多進程庫。
其他
未歸類的優秀 Asnycio 庫
aiofiles - 基于 Asyncio,支持文件異步操作。
aiodebug - 用于監控和測試 Asyncio 程序的微型庫。
aiorun - 提供處理通用 Asyncio 樣板,啟動和關閉事件驅動的
run函數。aiozipkin - 使用 zipkin 的分布式 Asyncio 追蹤測量儀。
faust - 純 Python 的流處理庫,用于處理流數據和事件。
paco - 協程驅動的異步編程的工具庫 (Python3.4+)。
文獻
關于 Asyncio 的文檔、博客等文獻
Asyncio 官方文檔 - 介紹了異步 I/O、事件循環、協程及任務等內容。
Asyncio 精編簡介 - 生成器,協程,原生協程及 async/await。
異步窺探 - 非常好的一篇文章,列出了哪些用例應該使用 Asyncio ,哪些用例無需使用 Asyncio。
異步 Python - 介紹如何進行 Python 異步編程。
用 Asyncio 進行 Python 開發 - 介紹異步編程的開發,從簡單示例說起,一直到 URL 爬取。
Python Aiohttp 的測試極限 - 使用 Python Aiohttp 進行百萬量級的并發測試。
演講
關于 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 的主題演講
</div> </div></div>
總結
- 上一篇: 解释器和编译器
- 下一篇: 并发 IO多路复用 select 非as