Skip to content

Asyncio

Awesome asyncio Awesome

> 精心挑选的 Python asyncio 框架、库、软件和资源列表.

巨蟒 asyncio Python 3.4 引入标准库的模块为使用协程编写单线程并发代码、通过套接字和其他资源进行多路复用 I/O 访问、运行网络客户端和服务器以及其他相关原语提供了基础设施.

Asyncio 并不是真正的全新技术,但几年来它似乎非常流行——尤其是在 Python 社区以及 2014 年 3 月发布的 Python 3.4 中. 因此,很难让自己了解最新的最棒的软件包. 在这里找到一些很棒的包裹,如果您缺少一个,我们指望您 create an Issue or a Pull Request 有了你的建议.


Web Frameworks

用于构建 Web 应用程序的库.

  • FastAPI - 基于类型提示的高性能 Python 3.6+ API 框架. 由 Starlette 和 Pydantic 提供支持.
  • Django - 具有庞大社区和生态系统的成熟的高级 Python Web 框架.
  • Starlette - 用于构建高性能服务的轻量级 ASGI 框架/工具包.
  • aiohttp - asyncio 的 HTTP 客户端/服务器(PEP-3156).
  • sanic - 专为快速运行而编写的 Python 3.5+ Web 服务器.
  • Quart - 具有与 Flask 相同 API 的异步 Web 微框架.
  • autobahn - WebSocket 和 WAMP 支持客户端和服务器的 asyncio 和 Twisted.
  • websockets - 一个用于在 Python 中构建 WebSocket 服务器和客户端的库,重点是正确性和简单性.
  • Tornado - 高性能网络框架和异步网络库.
  • uvicorn - 快如闪电的 ASGI 服务器.

Message Queues

使用消息队列实现应用程序的库.

  • aioamqp - 使用 asyncio 的 AMQP 实现.
  • pyzmq - ZeroMQ 的 Python 绑定.
  • aiozmq - 与 ZeroMQ 的替代 Asyncio 集成.
  • crossbar - Crossbar.io 是一个用于分布式和微服务应用程序的网络平台.
  • asyncio-nats - NATS 消息系统的客户端.
  • aiokafka - Apache Kafka 客户端.

Database Drivers

连接数据库的库.

  • asyncpg - 用于 Python/asyncio 的快速 PostgreSQL 数据库客户端库.
  • asyncpgsa - 具有 sqlalchemy 核心支持的 Asyncpg.
  • aiopg - 用于访问 PostgreSQL 数据库的库.
  • aiomysql - 用于访问 MySQL 数据库的库
  • aioodbc - 用于访问 ODBC 数据库的库.
  • motor - MongoDB 的异步 Python 驱动程序.
  • redis-py - Redis Python 客户端(包括 aioreadis 现在).
  • aiocouchdb - 建立在 aiohttp (asyncio) 之上的 CouchDB 客户端.
  • aioinflux - 建立在 aiohttp 之上的 InfluxDB 客户端.
  • aioes - 用于弹性搜索的 Asyncio 兼容驱动程序.
  • peewee-async - 基于ORM的实现 peewee 和aiopg.
  • GINO - 是一个轻量级的异步Python ORM,基于 SQLAlchemy 核心,与 asyncpg 方言.
  • Tortoise ORM - 本机多后端 ORM,具有类似 Django 的 API 和简单的关系管理.
  • Databases - SQLAlchemy 核心的异步数据库访问,支持 PostgreSQL、MySQL 和 SQLite.
  • Prisma Client Python - 一个自动生成的、完全类型安全的 ORM,由 Pydantic 提供支持,专门为您的模式量身定制——支持 SQLite、PostgreSQL、MySQL、MongoDB、MariaDB 等.
  • Piccolo - 一个 ORM / 查询生成器,可以在异步和同步模式下工作,具有漂亮的管理 GUI 和 ASGI 中间件.
  • Beanie - 基于异步 MongoDB ODM motorPydantic.

Networking

在您的网络中进行通信的库.

  • AsyncSSH - 提供 SSHv2 协议的异步客户端和服务器实现.
  • aiodns - 用于 asyncio 的简单 DNS 解析器.
  • aioping - ICMP (ping) 协议的快速异步实现.
  • httpx - 用于 Python 3 的异步 HTTP 客户端 requests 兼容的API.

GraphQL

构建 GraphQL 服务器的库.

  • Ariadne - 用于实现 GraphQL 服务器的模式优先 Python 库.
  • Tartiflette - 架构优先的 Python 3.6+ GraphQL 引擎构建在 libgraphqlparser 之上.
  • Strawberry - 代码优先的 Python 3 GraphQL 服务器,支持 Django、Flask 和 FastAPI/Starlette.

Testing

用于测试基于 asyncio 的应用程序的库.

  • aiomock - 一个支持异步方法的 python 模拟库.
  • asynctest - Enhance the standard unittest package with features for testing. asyncio libraries
  • pytest-asyncio - Pytest 支持异步.
  • aresponses - 异步 http 模拟. 类似于 responses 图书馆用于 requests.
  • aioresponses - Python aiohttp 包中模拟/伪造 Web 请求的帮助程序.

Alternative Loops

替代异步循环实现.

  • uvloop - 在 libuv 之上超快速地实现异步事件循环.

Misc

其他很棒的异步库.

  • aiochan - 在 asyncio 之上使用通道、选择和多处理的 CSP 样式并发.
  • aiocache - 不同后端的缓存管理器.
  • aiofiles - 文件支持异步.
  • aiopath - asyncio 的异步 pathlib.
  • aiodebug - 一个用于监控和测试异步程序的小型库.
  • aiorun - 一个 run() 函数,用于处理启动和正常关闭的所有常用样板.
  • aiosc - 轻量级开放声音控制实施.
  • aioserial - 直接替换 pySerial.
  • aiozipkin - 使用 zipkin 的 asyncio 分布式跟踪工具
  • asgiref - 用于 ASGI 到 WSGI 集成的后端实用程序,包括 sync_to_async 和 async_to_sync 函数包装器.
  • async_property - 异步属性的 Python 装饰器.
  • ruia - 基于 asyncio 的异步网络抓取微框架.
  • kubernetes_asyncio - Kubernetes 的异步客户端库.
  • aiomisc - asyncio 的杂项实用程序.
  • taskiq - 异步分布式任务管理器(像芹菜,但异步).

Writings

文档、博客文章和其他关于 asyncio 的精彩文章.

Talks

有关 asyncio 的精彩演讲录音.

Alternatives to asyncio

在 Python 中进行异步编程的替代方法,其中一些尝试支持与 asyncio 的某些兼容性,另一些则根本不兼容.

  • curio - 协程并发库.
  • Curio-Asyncio Bridge - 基本 curio -> asyncio 协程桥.
  • trio - 用于人类和蛇人的 Pythonic 异步 I/O.
  • trio-asyncio - 在 Trio 之上重新实现异步主循环.
  • AnyIO - 在 trio 或 asyncio 之上工作的高级异步并发和网络框架.