Asyncio
Awesome asyncio ¶
> 精心挑选的 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 motor 和 Pydantic.
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 的精彩文章.
- Official asyncio documentation - 异步 I/O、事件循环、协程和任务.
- Short well-written intro to asyncio - 生成器、协程、本机协程和异步/等待.
- AsyncIO for the Working Python Developer - 对异步编程的简单介绍,从基本示例到 URL 获取.
- Test limits of Python aiohttp - 使用 python-aiohttp 发出 100 万次请求.
- ASGI (Asynchronous Server Gateway Interface) - WSGI 的精神继承者,旨在提供具有异步能力的 Python Web 服务器、框架和应用程序之间的标准接口.
- First Principles Introduction to Asyncio - 对 asyncio 内部工作原理的非流行语第一原则介绍.
- Developing and Testing an Asynchronous API with FastAPI and Pytest - 本教程介绍如何使用测试驱动开发 (TDD) 使用 FastAPI 开发和测试异步 API.
- Python Concurrency with asyncio - 了解如何使用并发编程和尖端的 asyncio 库加速慢速 Python 代码.
Talks¶
有关 asyncio 的精彩演讲录音.
- Topics of Interest (Python Asyncio) | screencast | slides - PyCon Brasil 2015 主题演讲(David Beazley).
- Python Asynchronous I/O Walkthrough - 8 部分代码演练(Philip Guo).
- Async/await in Python 3.5 and why it is awesome - EuroPython 2016(Yury Selivanov).
- Fear and Awaiting in Async: A Savage Journey to the Heart of the Coroutine Dream | screencast - PyOhio 2016 主题演讲(David Beazley).
- Asynchronous Python for the Complete Beginner | slides - PyCon 2017(米格尔·格林伯格).
- Demystifying Python's Async and Await Keywords - JetBrains TV 2020(迈克尔·肯尼迪)
Alternatives to asyncio¶
在 Python 中进行异步编程的替代方法,其中一些尝试支持与 asyncio
的某些兼容性,另一些则根本不兼容.
- curio - 协程并发库.
- Curio-Asyncio Bridge - 基本 curio -> asyncio 协程桥.
- trio - 用于人类和蛇人的 Pythonic 异步 I/O.
- trio-asyncio - 在 Trio 之上重新实现异步主循环.
- AnyIO - 在 trio 或 asyncio 之上工作的高级异步并发和网络框架.