Потрясающее асинхронно
Тщательно составленный список замечательных асинхронных фреймворков, библиотек, программного обеспечения и ресурсов Python.
Модуль Python asyncio, представленный в стандартной библиотеке Python 3.4, обеспечивает инфраструктуру для написания однопоточного параллельного кода с использованием сопрограмм, мультиплексирования доступа ввода-вывода через сокеты и другие ресурсы, запуска сетевых клиентов и серверов и других связанных примитивов.
Asyncio на самом деле не является совершенно новой технологией, однако она, похоже, очень популярна уже несколько лет, особенно в сообществе Python и с выпуском Python 3.4 в марте 2014 года. Таким образом, довольно сложно быть в курсе последних событий. с самыми потрясающими пакетами. Найдите некоторые из этих замечательных пакетов здесь, и если вам не хватает одного, мы рассчитываем на то, что вы создадите проблему или запрос на включение по вашему предложению.
Содержание
- Веб-фреймворки
- Очереди сообщений
- Драйверы баз данных
- сеть
- ГрафQL
- Тестирование
- Альтернативные циклы
- Разное
- Сочинения
- Переговоры
- Альтернативы асинхронному
Веб-фреймворки
Библиотеки для создания веб-приложений.
- FastAPI — высокопроизводительная платформа API Python 3.6+, основанная на подсказках типов. При поддержке Starlette и Pydantic.
- Django — авторитетный веб-фреймворк Python высокого уровня с огромным сообществом и экосистемой.
- Starlette — облегченная среда/набор инструментов ASGI для создания высокопроизводительных сервисов.
- aiohttp — HTTP-клиент/сервер для asyncio (PEP-3156).
- sanic — веб-сервер Python 3.5+, созданный для быстрой работы.
- Quart — асинхронная веб-микроинфраструктура с тем же API, что и Flask.
- autobahn — WebSocket и WAMP, поддерживающие asyncio и Twisted, для клиентов и серверов.
- websockets — библиотека для создания серверов и клиентов WebSocket на Python с упором на корректность и простоту.
- Tornado — производительная веб-инфраструктура и асинхронная сетевая библиотека.
- uvicorn — молниеносный ASGI-сервер.
Очереди сообщений
Библиотеки для реализации приложений, использующих очереди сообщений.
- aioamqp — реализация AMQP с использованием asyncio.
- pyzmq — привязки Python для ZeroMQ.
- aiozmq — альтернативная интеграция Asyncio с ZeroMQ.
- Crossbar — Crossbar.io — это сетевая платформа для распределенных и микросервисных приложений.
- asyncio-nats — клиент для системы обмена сообщениями NATS.
- aiokafka — клиент для Apache Kafka.
Драйверы баз данных
Библиотеки для подключения к базам данных.
- asyncpg — быстрая клиентская библиотека базы данных PostgreSQL для Python/asyncio.
- asyncpgsa — Asyncpg с поддержкой ядра sqlalchemy.
- aiopg — библиотека для доступа к базе данных PostgreSQL.
- aiomysql — библиотека для доступа к базе данных MySQL.
- aiooodbc — Библиотека для доступа к базам данных ODBC.
- двигатель — асинхронный драйвер Python для MongoDB.
- redis-py — клиент Redis Python (который теперь включает aioreadis).
- aiocouchdb — клиент CouchDB, построенный на основе aiohttp (asyncio).
- aioinflux — клиент InfluxDB, построенный на основе aiohttp.
- aioes — Asyncio-совместимый драйвер для elasticsearch.
- peewee-async — реализация ORM на основе peewee и aiopg.
- GINO — это легкая асинхронная ORM Python, основанная на ядре SQLAlchemy с диалектом asyncpg.
- Tortoise ORM — встроенный многосерверный ORM с Django-подобным API и простым управлением связями.
- Базы данных — асинхронный доступ к базе данных для ядра SQLAlchemy с поддержкой PostgreSQL, MySQL и SQLite.
- Prisma Client Python — автоматически создаваемая, полностью типобезопасная ORM на базе Pydantic, специально разработанная для вашей схемы — поддерживает SQLite, PostgreSQL, MySQL, MongoDB, MariaDB и другие.
- Piccolo — построитель ORM/запросов, который может работать в асинхронном и синхронном режимах, с приятным графическим интерфейсом администратора и промежуточным программным обеспечением ASGI.
- Beanie — асинхронный ODM MongoDB, построенный на базе Motor и Pydantic.
сеть
Библиотеки для общения в вашей сети.
- AsyncSSH — обеспечивает асинхронную клиентскую и серверную реализацию протокола SSHv2.
- aiodns — простой преобразователь DNS для asyncio.
- aioping — быстрая асинхронная реализация протокола ICMP (ping).
- httpx — асинхронный HTTP-клиент для Python 3 с API, совместимым с запросами.
ГрафQL
Библиотеки для создания серверов GraphQL.
- Ариадна — первая библиотека Python для реализации серверов GraphQL.
- Tartiflette — первый в схеме движок GraphQL Python 3.6+, построенный на основе
libgraphqlparser
. - Strawberry — сервер GraphQL Python 3 с поддержкой Django, Flask и FastAPI/Starlette.
Тестирование
Библиотеки для тестирования приложений на основе asyncio.
- aiomock — библиотека макетов Python, поддерживающая асинхронные методы.
- asynctest — дополните стандартный пакет unittest функциями для тестирования. асинхронные библиотеки
- pytest-asyncio — поддержка Pytest для asyncio.
- ответы — насмешка над Asyncio http. Аналогично библиотеке ответов, используемой для запросов.
- aioresponses — помощник для ложных/фальшивых веб-запросов в пакете Python aiohttp.
Альтернативные циклы
Альтернативные реализации цикла asyncio.
- uvloop — сверхбыстрая реализация цикла событий asyncio поверх libuv.
Разное
Другие замечательные библиотеки asyncio.
- aiochan — параллелизм в стиле CSP с каналами, выбор и многопроцессорная обработка поверх asyncio.
- aiocache — менеджер кэша для разных бэкендов.
- aiofiles — поддержка файлов для asyncio.
- aiopath — асинхронная
pathlib
для asyncio. - aiodebug — крошечная библиотека для мониторинга и тестирования асинхронных программ.
- aiorun — функция
run()
, которая обрабатывает все стандартные шаблоны запуска и плавного завершения работы. - aiosc — облегченная реализация открытого управления звуком.
- aioserial — замена pySerial.
- aiozipkin — инструментарий распределенной трассировки для asyncio с zipkin.
- asgiref — внутренние утилиты для интеграции ASGI с WSGI, включая оболочки функций sync_to_async и async_to_sync.
- async_property — декоратор Python для асинхронных свойств.
- ruia — микроплатформа асинхронного веб-скрапинга, основанная на asyncio.
- kubernetes_asyncio — асинхронная клиентская библиотека для Kubernetes.
- aiomisc — Разные утилиты для
asyncio
. - Taskiq — Асинхронный распределенный диспетчер задач (как сельдерей, но асинхронный).
Сочинения
Документация, сообщения в блогах и другие замечательные статьи об asyncio.
- Официальная документация asyncio — асинхронный ввод-вывод, цикл событий, сопрограммы и задачи.
- Краткое, хорошо написанное введение в asyncio — генераторы, сопрограммы, собственные сопрограммы и async/await.
- AsyncIO для работающего разработчика Python — краткое введение в асинхронное программирование, от базовых примеров до получения URL-адресов.
- Ограничения тестирования Python aiohttp — выполнение 1 миллиона запросов с помощью python-aiohttp.
- ASGI (интерфейс асинхронного серверного шлюза) — духовный преемник WSGI, предназначенный для обеспечения стандартного интерфейса между веб-серверами Python с поддержкой асинхронной синхронизации, платформами и приложениями.
- Первые принципы: введение в Asyncio — немодное введение в основные принципы внутренней работы asyncio.
- Разработка и тестирование асинхронного API с помощью FastAPI и Pytest. В этом руководстве рассматривается, как разработать и протестировать асинхронный API с помощью FastAPI с использованием разработки через тестирование (TDD).
- Параллелизм Python с помощью asyncio. Узнайте, как ускорить медленный код Python с помощью параллельного программирования и передовой библиотеки asyncio.
Переговоры
Записи потрясающих выступлений об asyncio.
- Интересующие темы (Python Asyncio) | скринкаст | слайды — доклад PyCon Brasil 2015 (Дэвид Бизли).
- Пошаговое руководство по асинхронному вводу-выводу Python — пошаговое руководство по коду из 8 частей (Филип Го).
- Async/await в Python 3.5 и почему это круто — EuroPython 2016 (Юрий Селиванов).
- Страх и ожидание в асинхронности: дикое путешествие к сердцу мечты корутины | Скринкаст – основной доклад PyOhio 2016 (Дэвид Бизли).
- Асинхронный Python для начинающих | слайды - PyCon 2017 (Мигель Гринберг).
- Демистификация ключевых слов Python Async и Await - JetBrains TV 2020 (Майкл Кеннеди)
Альтернативы асинхронному
Альтернативные подходы к асинхронному программированию на Python, некоторые из которых пытаются поддерживать некоторую совместимость с asyncio
, другие вообще несовместимы.
- curio — библиотека параллелизма сопрограмм.
- Curio-Asyncio Bridge — базовый Curio -> мост сопрограммы asyncio.
- trio — Pythonic асинхронный ввод-вывод для людей и змей.
- trio-asyncio — повторная реализация основного цикла asyncio поверх Trio.
- AnyIO — высокоуровневая асинхронная инфраструктура параллелизма и сети, которая работает поверх trio или asyncio.