Awesome asyncio Awesome

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 2016. 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.

  • 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.
  • Vibora - Performant web framework inspired by Flask.
  • cirrina - Opinionated asynchronous web framework based on aiohttp.
  • 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.
  • Japronto! - Experimental http toolkit built on top of uvloop and picohttpparser.
  • Starlette - A lightweight ASGI framework/toolkit for building high performance services.
  • uvicorn - The lightning-fast ASGI server.

Message Queues

Libraries to implement applications using message queues.

  • aioamqp - AMQP implementation using asyncio.
  • aiozmq - Asyncio (pep 3156) 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.
  • aioredis - aio-libs Redis client (PEP 3156).
  • asyncio-redis - Redis client for Python asyncio (PEP 3156).
  • 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.

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

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.
  • curio - The coroutine concurrency library.

Misc

Other awesome asyncio libraries.

  • aiofiles - File support 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.
  • aioserial - A drop-in replacement of pySerial.
  • aiozipkin - Distributed tracing instrumentation for asyncio with zipkin

Writings

Documentation, blog posts, and other awesome writing about asyncio.

Talks

Recordings of awesome talks about asyncio.