A curated list of awesome Python asyncio frameworks, libraries, software and resources

Overview

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

  • 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.
  • FastAPI - A very high performance Python 3.6+ API framework based on type hints. Powered by Starlette and Pydantic.

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.
  • 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.
  • Databases - Async database access for SQLAlchemy core, with support for PostgreSQL, MySQL, and SQLite.

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

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.

  • aiocache - Cache manager for different backends.
  • 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
  • asgiref - Backend utils for ASGI to WSGI integration, includes sync_to_async and async_to_sync function wrappers.
  • ruia - An async web scraping micro-framework based on asyncio.

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
Comments
  • added pproxy

    added pproxy

    What is this project?

    pproxy is an awesome HTTP/Socks4/Socks5/Shadowsocks/ShadowsocksR/SSH/Redirect/Pf TCP/UDP asynchronous tunnel proxy implemented in Python 3 asyncio.

    https://github.com/qwj/python-proxy

    Why is it awesome?

    • pproxy written in pure python 3 with full of asyncio features
    • provided several proxy protocol supports
    • very easy to use and powerful
    please-vote 
    opened by txdywy 6
  • added python responder

    added python responder

    What is this project?

    Describe the project you are adding. What are the features?

    It's an asyncio micro-web framework, similar to bottle or flask.

    Please add a link in this pull request.

    http://python-responder.org/

    Note: Please respect the Contribution Guidelines!

    Why is it awesome?

    Bottle is awesome, but limited by it's sync nature. (~400 req/sec for a no-op.) This gives the ease of development of bottle w/ 10-100x the potential performance.

    What's different between this project and others?

    I know of no other similar projects.

    please-vote 
    opened by keredson 6
  • Twisted as asyncio alternative

    Twisted as asyncio alternative

    What is this project?

    Twisted is a mature Python2/3 async framework with bunch of network protocol implementations built-in.

    Note: Please respect the Contribution Guidelines!

    Why is it awesome?

    Twisted AFAIK at some point was THE solution for async in Python, and because of that even if it lags behind right now it is biggest competitor for asyncio. Batteries included (implements number of different protocols).

    I have added a link which explains how it can be used on top of asyncio loop. I have not linked to the official documentation (instead opting to link official bug tracker) as the auto-generated documentation isn't too helpful as it contains only one-line description.

    please-vote 
    opened by rooterkyberian 5
  • πŸ“¦ Add linkcheck action

    πŸ“¦ Add linkcheck action

    First of all, thank you for your work on this project πŸ‘

    In this PR, I have added a workflow which checks links and fails if any of them are broken. The workflow runs everyday and on pushes.

    Disclaimer: this action is my own action, the repo is here

    You can view the logs of the workflow on my fork here. 1 link was found to be broken.

    Let me know if you'd like me to change anything, any feedback is appreciated either way :)

    opened by TechWiz-3 4
  • Add Starlette.

    Add Starlette.

    Starlette is a lightweight ASGI framework/toolkit for building high performance services. You can use any of its components independently.

    Some of its features:

    • WebSocket support.
    • GraphQL support.
    • In-process background tasks.
    • 100% type annotated codebase.
    • Zero hard dependencies.

    This one does not count as a feature, but still worth mentioning: it's made by the same author of Django REST framework.

    The only drawback is that it's still a relatively young project.

    please-vote 
    opened by olivertso 4
  • Adding trio to Alternatives

    Adding trio to Alternatives

    What is this project?

    Trio is an async library inspired by simplicity ( in the vein of Kenneth Reitz's requests library). https://github.com/python-trio/trio

    Why is it awesome?

    Attempts to make async easy to use, and to get it right.

    please-vote 
    opened by therumbler 4
  • Add loafer

    Add loafer

    What is this project?

    It abstracts the consumption of SQS messages using asyncio

    http://loafer.readthedocs.io/en/latest/

    Features:

    • Encourages decoupling from message providers and consumers
    • Easy to extend and customize
    • Easy error handling, including integration with sentry
    • Easy to create one or multiple services
    • Generic Handlers
    • Amazon SQS integration

    Why is it awesome?

    When using it, you don't need to worry about asyncio and the event-loop, it's all abstracted away, you can even write sync code that it will deal with it just fine.

    please-vote 
    opened by daneoshiga 4
  • asynccli

    asynccli

    What is this project?

    A command line interface framework built off acyncio called asynccli.

    Why is it awesome?

    • Most other CLI frameworks in Python do not have asyncio support out of the box. This is designed specifically around asynchronous CLI tool development
    • It allows for real simple calls by a single function, or more extensive class based definitions that allow for nesting and arguments
    please-vote 
    opened by ahopkins 4
  • Add Beanie to Database section.

    Add Beanie to Database section.

    What is this project?

    Describe the project you are adding. What are the features?

    Please add a link in this pull request.

    beanie-odm.dev

    Why is it awesome?

    Async MongoDB + Pydantic? What's not to love. But also, it's powering the Talk Python websites with 10s of ms response times and millions of requests a month.

    Why is the project you are adding awesome? What's different between this project and others?

    • Super clean ODM for MongoDB
    • Based on Pydantic
    • Stable and active
    please-vote 
    opened by mikeckennedy 3
  • Add aiosonic

    Add aiosonic

    What is this project?

    Very fast http client

    https://github.com/sonic182/aiosonic

    Why is it awesome?

    I did this http client because I needed a really fast http client for another tool I built

    need-reasons please-vote 
    opened by sonic182 3
  • Added asgiref

    Added asgiref

    What is this project?

    A WSGI-ASGI integration library.

    https://github.com/django/asgiref

    Why is it awesome?

    • async_to_sync and sync_to_async function wrappers to help pull different parts of code together.
    • stateless server base building block
    • wsgi-to-asgi adapter
    please-vote 
    opened by mattiecnvr 3
  • Added taskiq project

    Added taskiq project

    Added taskiq

    What is this project?

    Task manager with full async support, It's core concept is similar to celery, but it's capable of executing async functions and it can send tasks asynchronously.

    Documentation: https://taskiq-python.github.io/

    Why is it awesome?

    There is no alternative solution to this problem for async programs.

    please-vote 
    opened by s3rius 0
  • πŸ“§ Add aiosmtplib

    πŸ“§ Add aiosmtplib

    What is this project?

    aiostmplib implements an SMTP client. Just like smtplib, but async!

    Why is it awesome?

    • Drop in smtplib replacement (except await is needed for connections) βœ…
    • Also provides a simpler send coroutine API βœ‰οΈ
    • Sometimes you have an asyncio project and need to send an email πŸ€·πŸ»β€β™‚οΈ
    please-vote 
    opened by cole 0
  • Added Additional Talk Videos from Python Conferences

    Added Additional Talk Videos from Python Conferences

    • These Videos try to demystify on how Aysnc is different from other Concurrency approaches (Threading, Multi-processing) in Python.
    • Additionally, David Beasley explains under the hood implementation of Async.
    opened by robinnarsinghranabhat 0
  • Add aioprocessing

    Add aioprocessing

    What is this project?

    aioprocessing provides asynchronous, asyncio compatible, coroutine versions of many blocking instance methods on objects in the multiprocessing library.

    aioprocessing

    Why is it awesome?

    • Simplify the processing usage
    • Reduce code when using multiprocessing objects
    • Add multiple blocking methods
    please-vote 
    opened by mathben 1
  • Adds aredis

    Adds aredis

    What is this project?

    Redis client for Python asyncio (has support for redis server, sentinel and cluster)

    Please add a link in this pull request: https://github.com/NoneGG/aredis

    Note: Please respect the Contribution Guidelines!

    Why is it awesome?

    • aioredis, which is already added in README, doesn't support redis cluster at the moment. But, aredis supports redis cluster.
    please-vote 
    opened by sgc109 1
  • Adds

    Adds "How async should have been" by @sobolevn

    Link: https://sobolevn.me/2020/06/how-async-should-have-been

    Why is it awesome?

    • It showcases how one can write sync Python code and still run it asynchronously
    • It shows how we can hide async behaviour into types
    • It shows how one can write code that will work with both sync and async primitives
    • It shows how Higher Kinded Types can be used to express IO independent tasks
    please-vote 
    opened by sobolevn 1
Owner
Timo Furrer
Enthusiastic Hacker who loves Free Open Source Software, Linux, Python, Machine Learning and :penguin:. Commits are my own.
Timo Furrer
Trio – a friendly Python library for async concurrency and I/O

Trio – a friendly Python library for async concurrency and I/O The Trio project aims to produce a production-quality, permissively licensed, async/awa

null 5k Jan 7, 2023
A lightweight (serverless) native python parallel processing framework based on simple decorators and call graphs.

A lightweight (serverless) native python parallel processing framework based on simple decorators and call graphs, supporting both control flow and dataflow execution paradigms as well as de-centralized CPU & GPU scheduling.

null 102 Jan 6, 2023
SCOOP (Scalable COncurrent Operations in Python)

SCOOP (Scalable COncurrent Operations in Python) is a distributed task module allowing concurrent parallel programming on various environments, from h

Yannick Hold 573 Dec 27, 2022
A Python package for easy multiprocessing, but faster than multiprocessing

MPIRE, short for MultiProcessing Is Really Easy, is a Python package for multiprocessing, but faster and more user-friendly than the default multiprocessing package.

null 753 Dec 29, 2022
Simple package to enhance Python's concurrent.futures for memory efficiency

future-map is a Python library to use together with the official concurrent.futures module.

Arai Hiroki 2 Nov 15, 2022
A concurrent sync tool which works with multiple sources and targets.

Concurrent Sync A concurrent sync tool which works similar to rsync. It supports syncing given sources with multiple targets concurrently. Requirement

Halit Şimşek 2 Jan 11, 2022
An ongoing curated list of frameworks, libraries, learning tutorials, software and resources in Python Language.

Python Development Welcome to the world of Python. An ongoing curated list of frameworks, libraries, learning tutorials, software and resources in Pyt

Paul Veillard 2 Dec 24, 2021
A curated list of awesome Jupyter projects, libraries and resources

Awesome Jupyter A curated list of awesome Jupyter projects, libraries and resources. Jupyter is an open-source web application that allows you to crea

Markus Schanta 3.1k Dec 30, 2022
An ongoing curated list of OS X best applications, libraries, frameworks and tools to help developers set up their macOS Laptop.

macOS Development Setup Welcome to MacOS Local Development & Setup. An ongoing curated list of OS X best applications, libraries, frameworks and tools

Paul Veillard 3 Apr 3, 2022
A curated list of awesome packages, articles, and other cool resources from the Wagtail community.

Awesome Wagtail A curated list of awesome packages, articles, and other cool resources from the Wagtail community. Wagtail is a Python CMS powered by

Springload 1.7k Jan 3, 2023
A curated list of awesome resources related to Semantic SearchπŸ”Ž and Semantic Similarity tasks.

A curated list of awesome resources related to Semantic Search?? and Semantic Similarity tasks.

null 224 Jan 4, 2023
A curated list of awesome Dash (plotly) resources

Awesome Dash A curated list of awesome Dash (plotly) resources Dash is a productive Python framework for building web applications. Written on top of

Luke Singham 1.7k Dec 26, 2022
A curated list of awesome mathematics resources

A curated list of awesome mathematics resources

Cyrille Rossant 6.7k Jan 5, 2023
Participants of Bertelsmann Technology Scholarship created an awesome list of resources and they want to share it with the world, if you find illegal resources please report to us and we will remove.

Participants of Bertelsmann Technology Scholarship created an awesome list of resources and they want to share it with the world, if you find illegal

Wissem Marzouki 29 Nov 28, 2022
An curated collection of awesome resources about networking in cybersecurity

An ongoing curated collection of awesome software, libraries, frameworks, talks & videos, best practices, learning tutorials and important practical resources about networking in cybersecurity

Paul Veillard, P. Eng 7 Nov 30, 2022
A curated list of papers and resources for scene text detection and recognition

Awesome Scene Text A curated list of papers and resources for scene text detection and recognition The year when a paper was first published, includin

Jan Zdenek 43 Mar 15, 2022
A curated list of awesome tools for Sphinx Python Documentation Generator

Awesome Sphinx (Python Documentation Generator) A curated list of awesome extra libraries, software and resources for Sphinx (Python Documentation Gen

Hyunjun Kim 831 Dec 27, 2022
A curated list of resources dedicated to scene text localization and recognition

Scene Text Localization & Recognition Resources A curated list of resources dedicated to scene text localization and recognition. Any suggestions and

CarlosTao 1.6k Dec 22, 2022
A curated list of programmatic weak supervision papers and resources

A curated list of programmatic weak supervision papers and resources

Jieyu Zhang 118 Jan 2, 2023
A curated list of papers, code and resources pertaining to image composition

A curated list of resources including papers, datasets, and relevant links pertaining to image composition.

BCMI 391 Dec 30, 2022