Awesome asyncio 
A carefully curated list of awesome Python asyncio frameworks,
libraries, software and resources.
The Python asyncio module
introduced to the standard library with Python 3.4 provides
infrastructure for writing single-threaded concurrent code using
coroutines, multiplexing I/O access over sockets and other resources,
running network clients and servers, and other related primitives.
Asyncio is not really a brand-new technology however it appears to be
very trending since a few years - especially in the Python community and
with the release of Python 3.4 in March 2014. Thus, it’s pretty hard to
keep yourself up-to-date with the most awesome packages out there. Find
some of those awesome packages here and if you are missing one
we count on you to create
an Issue or a Pull Request with your suggestion.
Contents
Web Frameworks
Libraries to build web applications.
- FastAPI - A very
high performance Python 3.6+ API framework based on type hints. Powered
by Starlette and Pydantic.
- Django - An
established, high-level Python web framework with a huge community and
ecosystem.
- Starlette - A
lightweight ASGI framework/toolkit for building high performance
services.
- aiohttp - Http
client/server for asyncio (PEP-3156).
- sanic - Python
3.5+ web server that’s written to go fast.
- Quart - An asyncio
web microframework with the same API as Flask.
- autobahn
- WebSocket and WAMP supporting asyncio and Twisted, for clients and
servers.
- websockets -
A library for building WebSocket servers and clients in Python with a
focus on correctness and simplicity.
- Tornado -
Performant web framework and asynchronous networking library.
- uvicorn - The
lightning-fast ASGI server.
Message Queues
Libraries to implement applications using message
queues.
- aioamqp - AMQP
implementation using asyncio.
- pyzmq - Python
bindings for ZeroMQ.
- aiozmq -
Alternative Asyncio integration with ZeroMQ.
- crossbar -
Crossbar.io is a networking platform for distributed and microservice
applications.
- asyncio-nats -
Client for the NATS messaging system.
- aiokafka - Client
for Apache Kafka.
Database Drivers
Libraries to connect to databases.
- asyncpg - Fast
PostgreSQL Database Client Library for Python/asyncio.
- asyncpgsa -
Asyncpg with sqlalchemy core support.
- aiopg - Library for
accessing a PostgreSQL database.
- aiomysql -
Library for accessing a MySQL database
- aioodbc - Library
for accessing a ODBC databases.
- motor - The async
Python driver for MongoDB.
- redis-py - Redis
Python Client (which includes aioreadis now).
- aiocouchdb -
CouchDB client built on top of aiohttp (asyncio).
- aioinflux -
InfluxDB client built on top of aiohttp.
- aioes - Asyncio
compatible driver for elasticsearch.
- peewee-async -
ORM implementation based on peewee and aiopg.
- GINO - is a lightweight
asynchronous Python ORM based on SQLAlchemy core, with asyncpg dialect.
- Tortoise ORM
- native multi-backend ORM with Django-like API and easy relations
management.
- Databases - Async
database access for SQLAlchemy core, with support for PostgreSQL, MySQL,
and SQLite.
- Prisma
Client Python - An auto-generated, fully type safe ORM powered by
Pydantic and tailored specifically for your schema - supports SQLite,
PostgreSQL, MySQL, MongoDB, MariaDB and more.
- Piccolo - An
ORM / query builder which can work in async and sync modes, with a nice
admin GUI, and ASGI middleware.
- Beanie - An async MongoDB ODM
built on motor and Pydantic.
Networking
Libraries to communicate in your network.
- AsyncSSH - Provides
an asynchronous client and server implementation of the SSHv2
protocol.
- aiodns - Simple DNS
resolver for asyncio.
- aioping - Fast
asyncio implementation of ICMP (ping) protocol.
- httpx - asynchronous
HTTP client for Python 3 with requests compatible API.
GraphQL
Libraries to build GraphQL servers.
- Ariadne - Schema-first
Python library for implementing GraphQL servers.
- Tartiflette - Schema-first
Python 3.6+ GraphQL engine built on top of
libgraphqlparser.
- Strawberry - Code-first
Python 3 GraphQL server with Django, Flask and FastAPI/Starlette
support.
Testing
Libraries to test asyncio based applications.
- aiomock - A
python mock library that supports async methods.
- asynctest -
Enhance the standard unittest package with features for testing. asyncio
libraries
- pytest-asyncio -
Pytest support for asyncio.
- aresponses -
Asyncio http mocking. Similar to the responses library used
for requests.
- aioresponses -
Helper for mock/fake web requests in Python aiohttp package.
Alternative Loops
Alternative asyncio loop implementations.
- uvloop - Ultra
fast implementation of asyncio event loop on top of libuv.
Misc
Other awesome asyncio libraries.
- aiochan - CSP-style
concurrency with channels, select and multiprocessing on top of
asyncio.
- aiocache - Cache
manager for different backends.
- aiofiles - File
support for asyncio.
- aiopath -
Asynchronous
pathlib for asyncio.
- aiodebug - A tiny
library for monitoring and testing asyncio programs.
- aiorun - A
run() function that handles all the usual boilerplate for
startup and graceful shutdown.
- aiosc - Lightweight
Open Sound Control implementation.
- aioserial - A
drop-in replacement of pySerial.
- aiozipkin -
Distributed tracing instrumentation for asyncio with zipkin
- asgiref - Backend
utils for ASGI to WSGI integration, includes sync_to_async and
async_to_sync function wrappers.
- async_property
- Python decorator for async properties.
- ruia - An async web
scraping micro-framework based on asyncio.
- kubernetes_asyncio
- Asynchronous client library for Kubernetes.
- aiomisc -
Miscellaneous utils for
asyncio.
- taskiq - Asynchronous
distributed task manager (like celery, but async).
Writings
Documentation, blog posts, and other awesome writing about
asyncio.
Talks
Recordings of awesome talks about asyncio.
Alternatives to asyncio
Alternative approaches to async programming in Python, some of
which attempt to support some compatibility with asyncio,
others are not compatible at all.
- curio - The coroutine
concurrency library.
- trio - Pythonic
async I/O for humans and snake people.
- trio-asyncio -
re-implementation of the asyncio mainloop on top of Trio.
- AnyIO - High level
asynchronous concurrency and networking framework that works on top of
either trio or asyncio.