很棒的异步
精心策划的精彩 Python 异步框架、库、软件和资源列表。
Python 3.4 中引入标准库的 Python asyncio 模块提供了使用协程编写单线程并发代码、通过套接字和其他资源复用 I/O 访问、运行网络客户端和服务器以及其他相关原语的基础设施。
Asyncio 并不是真正的全新技术,但几年来它似乎非常流行 - 特别是在 Python 社区以及 2014 年 3 月发布的 Python 3.4 中。因此,让自己保持最新状态非常困难拥有最棒的套餐。在这里找到一些很棒的软件包,如果您缺少一个,我们希望您根据您的建议创建一个问题或拉取请求。
内容
- 网络框架
- 消息队列
- 数据库驱动程序
- 联网
- GraphQL
- 测试
- 替代循环
- 杂项
- 著作
- 会谈
- 异步的替代方案
网络框架
用于构建 Web 应用程序的库。
- FastAPI - 一个基于类型提示的高性能 Python 3.6+ API 框架。由 Starlette 和 Pydantic 提供支持。
- Django - 一个成熟的高级 Python Web 框架,拥有庞大的社区和生态系统。
- Starlette - 用于构建高性能服务的轻量级 ASGI 框架/工具包。
- aiohttp - 用于 asyncio 的 Http 客户端/服务器 (PEP-3156).
- sanic - Python 3.5+ Web 服务器,旨在快速运行。
- Quart - 一个 asyncio Web 微框架,具有与 Flask 相同的 API。
- autobahn - 支持 asyncio 和 Twisted 的 WebSocket 和 WAMP,适用于客户端和服务器。
- websockets - 用于在 Python 中构建 WebSocket 服务器和客户端的库,重点关注正确性和简单性。
- Tornado - 高性能 Web 框架和异步网络库。
- uvicorn - 快如闪电的 ASGI 服务器。
消息队列
使用消息队列实现应用程序的库。
- aioamqp - 使用 asyncio 的 AMQP 实现.
- pyzmq - ZeroMQ 的 Python 绑定。
- aiozmq - 与 ZeroMQ 的替代 Asyncio 集成。
- crossbar - Crossbar.io 是一个用于分布式和微服务应用程序的网络平台。
- asyncio-nats - NATS 消息系统的客户端。
- aiokafka - Apache Kafka 客户端。
数据库驱动程序
连接到数据库的库。
- 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 - 用于elasticsearch 的异步兼容驱动程序。
- peewee-async - 基于 peewee 和 aiopg 的 ORM 实现。
- GINO - 是一个基于 SQLAlchemy 核心的轻量级异步 Python ORM,具有 asyncpg 方言。
- Tortoise ORM - 原生多后端 ORM,具有类似 Django 的 API 和简单的关系管理。
- 数据库 - SQLAlchemy 核心的异步数据库访问,支持 PostgreSQL、MySQL 和 SQLite。
- Prisma Client Python - 由 Pydantic 提供支持并专为您的架构量身定制的自动生成、类型完全安全的 ORM - 支持 SQLite、PostgreSQL、MySQL、MongoDB、MariaDB 等。
- Piccolo - 一个 ORM / 查询构建器,可以在异步和同步模式下工作,具有漂亮的管理 GUI 和 ASGI 中间件。
- Beanie - 基于 motor 和 Pydantic 构建的异步 MongoDB ODM。
联网
在您的网络中进行通信的库。
- AsyncSSH - 提供 SSHv2 协议的异步客户端和服务器实现。
- aiodns - 用于 asyncio 的简单 DNS 解析器。
- aioping - ICMP (ping) 协议的快速异步实现。
- httpx - Python 3 的异步 HTTP 客户端,具有请求兼容的 API。
GraphQL
用于构建 GraphQL 服务器的库。
- Ariadne - 用于实现 GraphQL 服务器的模式优先 Python 库。
- Tartiflette - 架构优先的 Python 3.6+ GraphQL 引擎构建在
libgraphqlparser
之上。 - Strawberry - 代码优先的 Python 3 GraphQL 服务器,支持 Django、Flask 和 FastAPI/Starlette。
测试
用于测试基于 asyncio 的应用程序的库。
- aiomock - 支持异步方法的 python 模拟库。
- asynctest - 使用测试功能增强标准单元测试包。异步库
- pytest-asyncio - Pytest 对 asyncio 的支持.
- aresponses - Asyncio http 模拟。类似于用于请求的响应库。
- aioresponses - Python aiohttp 包中模拟/虚假 Web 请求的帮助程序.
替代循环
替代异步循环实现。
- uvloop - 在 libuv 之上超快速实现异步事件循环.
杂项
其他很棒的异步库。
- aiochan - CSP 风格的并发,在 asyncio 之上具有通道、选择和多处理。
- aiocache - 不同后端的缓存管理器。
- aiofiles - 对 asyncio 的文件支持。
- 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 - 异步分布式任务管理器(如 celery,但异步)。
著作
文档、博客文章和其他有关 asyncio 的精彩文章。
- 官方 asyncio 文档 - 异步 I/O、事件循环、协程和任务。
- 对 asyncio 的简短介绍 - 生成器、协程、本机协程和 async/await。
- AsyncIO for the Working Python Developer - 简要介绍异步编程,从基本示例到 URL 获取。
- Python aiohttp 的测试限制 - 使用 python-aiohttp 发出 100 万个请求。
- ASGI(异步服务器网关接口) - WSGI 的精神继承者,旨在在支持异步的 Python Web 服务器、框架和应用程序之间提供标准接口。
- FirstprinciplesIntroductiontoAsyncio - 对 asyncio 内部工作原理的非流行语第一性原理介绍.
- 使用 FastAPI 和 Pytest 开发和测试异步 API - 本教程介绍如何使用测试驱动开发 (TDD) 使用 FastAPI 开发和测试异步 API。
- Python Concurrency with asyncio - 了解如何使用并发编程和尖端的 asyncio 库来加速缓慢的 Python 代码。
会谈
关于 asyncio 的精彩演讲的录音。
- 感兴趣的主题 (Python Asyncio) |截屏视频 |幻灯片 - PyCon Brasil 2015 主题演讲(David Beazley)。
- Python 异步 I/O 演练 - 8 部分代码演练(PhilipGuo)。
- Python 3.5 中的异步/等待及其为何出色 - EuroPython 2016 (Yury Selivanov)。
- 异步中的恐惧和等待:协程梦想之心的野蛮之旅 |截屏视频 - PyOhio 2016 主题演讲(David Beazley)。
- 适合初学者的异步 Python |幻灯片 - PyCon 2017(Miguel Grinberg)。
- 揭秘 Python 的 Async 和 Await 关键字 - JetBrains TV 2020 (Michael Kennedy)
异步的替代方案
Python 中异步编程的替代方法,其中一些尝试支持与asyncio
的某些兼容性,另一些则根本不兼容。
- curio - 协程并发库。
- Curio-Asyncio Bridge - 基本 curio -> 异步协程桥。
- trio - 适用于人类和蛇人的 Pythonic 异步 I/O。
- trio-asyncio - 在 Trio 之上重新实现 asyncio 主循环.
- AnyIO - 高级异步并发和网络框架,在 trio 或 asyncio 之上工作。