This commit is contained in:
2025-07-18 23:13:11 +02:00
parent c9485bf576
commit 652812eed0
2354 changed files with 1266414 additions and 1 deletions

318
html/asyncio.md2.html Normal file
View File

@@ -0,0 +1,318 @@
<blockquote>
<p>[!WARNING] This project is looking for a new home. Im no longer
maintaining it. Please let me know if you want to take over maintainance
for it. Write me an email to timo@furrer.life</p>
</blockquote>
<h1 id="awesome-asyncio-awesome">Awesome asyncio <a
href="https://github.com/sindresorhus/awesome"><img
src="https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg"
alt="Awesome" /></a></h1>
<blockquote>
<p>A carefully curated list of awesome Python asyncio frameworks,
libraries, software and resources.</p>
</blockquote>
<p>The Python <a
href="https://docs.python.org/3/library/asyncio.html">asyncio</a> 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.</p>
<p>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, its pretty hard to
keep yourself up-to-date with the most awesome packages out there. Find
some of those <em>awesome</em> packages here and if you are missing one
we count on you to <a
href="https://github.com/timofurrer/awesome-asyncio/blob/master/CONTRIBUTING.md">create
an Issue or a Pull Request</a> with your suggestion.</p>
<h2 id="contents">Contents</h2>
<ul>
<li><a href="#web-frameworks">Web Frameworks</a></li>
<li><a href="#message-queues">Message Queues</a></li>
<li><a href="#database-drivers">Database Drivers</a></li>
<li><a href="#networking">Networking</a></li>
<li><a href="#graphql">GraphQL</a></li>
<li><a href="#testing">Testing</a></li>
<li><a href="#alternative-loops">Alternative Loops</a></li>
<li><a href="#misc">Misc</a></li>
<li><a href="#writings">Writings</a></li>
<li><a href="#talks">Talks</a></li>
<li><a href="#alternatives-to-asyncio">Alternatives to asyncio</a></li>
</ul>
<hr />
<h2 id="web-frameworks">Web Frameworks</h2>
<p><em>Libraries to build web applications.</em></p>
<ul>
<li><a href="https://github.com/tiangolo/fastapi">FastAPI</a> - A very
high performance Python 3.6+ API framework based on type hints. Powered
by Starlette and Pydantic.</li>
<li><a href="https://www.djangoproject.com/">Django</a> - An
established, high-level Python web framework with a huge community and
ecosystem.</li>
<li><a href="https://github.com/encode/starlette">Starlette</a> - A
lightweight ASGI framework/toolkit for building high performance
services.</li>
<li><a href="https://github.com/KeepSafe/aiohttp">aiohttp</a> - Http
client/server for asyncio (PEP-3156).</li>
<li><a href="https://github.com/channelcat/sanic">sanic</a> - Python
3.5+ web server thats written to go fast.</li>
<li><a href="https://github.com/pallets/quart">Quart</a> - An asyncio
web microframework with the same API as Flask.</li>
<li><a href="https://github.com/crossbario/autobahn-python">autobahn</a>
- WebSocket and WAMP supporting asyncio and Twisted, for clients and
servers.</li>
<li><a href="https://github.com/aaugustin/websockets/">websockets</a> -
A library for building WebSocket servers and clients in Python with a
focus on correctness and simplicity.</li>
<li><a href="http://www.tornadoweb.org/en/stable/">Tornado</a> -
Performant web framework and asynchronous networking library.</li>
<li><a href="https://github.com/encode/uvicorn">uvicorn</a> - The
lightning-fast ASGI server.</li>
</ul>
<h2 id="message-queues">Message Queues</h2>
<p><em>Libraries to implement applications using message
queues.</em></p>
<ul>
<li><a href="https://github.com/Polyconseil/aioamqp">aioamqp</a> - AMQP
implementation using asyncio.</li>
<li><a href="https://github.com/zeromq/pyzmq">pyzmq</a> - Python
bindings for ZeroMQ.</li>
<li><a href="https://github.com/aio-libs/aiozmq">aiozmq</a> -
Alternative Asyncio integration with ZeroMQ.</li>
<li><a href="https://github.com/crossbario/crossbar">crossbar</a> -
Crossbar.io is a networking platform for distributed and microservice
applications.</li>
<li><a href="https://github.com/nats-io/asyncio-nats">asyncio-nats</a> -
Client for the NATS messaging system.</li>
<li><a href="https://github.com/aio-libs/aiokafka">aiokafka</a> - Client
for Apache Kafka.</li>
</ul>
<h2 id="database-drivers">Database Drivers</h2>
<p><em>Libraries to connect to databases.</em></p>
<ul>
<li><a href="https://github.com/MagicStack/asyncpg">asyncpg</a> - Fast
PostgreSQL Database Client Library for Python/asyncio.</li>
<li><a href="https://github.com/CanopyTax/asyncpgsa">asyncpgsa</a> -
Asyncpg with sqlalchemy core support.</li>
<li><a href="https://github.com/aio-libs/aiopg/">aiopg</a> - Library for
accessing a PostgreSQL database.</li>
<li><a href="https://github.com/aio-libs/aiomysql">aiomysql</a> -
Library for accessing a MySQL database</li>
<li><a href="https://github.com/aio-libs/aioodbc">aioodbc</a> - Library
for accessing a ODBC databases.</li>
<li><a href="https://github.com/mongodb/motor">motor</a> - The async
Python driver for MongoDB.</li>
<li><a href="https://github.com/redis/redis-py">redis-py</a> - Redis
Python Client (which includes <a
href="https://github.com/aio-libs/aioredis">aioreadis</a> now).</li>
<li><a href="https://github.com/aio-libs/aiocouchdb">aiocouchdb</a> -
CouchDB client built on top of aiohttp (asyncio).</li>
<li><a href="https://github.com/plugaai/aioinflux">aioinflux</a> -
InfluxDB client built on top of aiohttp.</li>
<li><a href="https://github.com/aio-libs/aioes">aioes</a> - Asyncio
compatible driver for elasticsearch.</li>
<li><a href="https://github.com/05bit/peewee-async">peewee-async</a> -
ORM implementation based on <a
href="https://github.com/coleifer/peewee">peewee</a> and aiopg.</li>
<li><a href="https://github.com/fantix/gino">GINO</a> - is a lightweight
asynchronous Python ORM based on <a
href="https://www.sqlalchemy.org/">SQLAlchemy</a> core, with <a
href="https://github.com/MagicStack/asyncpg">asyncpg</a> dialect.</li>
<li><a href="https://github.com/tortoise/tortoise-orm">Tortoise ORM</a>
- native multi-backend ORM with Django-like API and easy relations
management.</li>
<li><a href="https://github.com/encode/databases">Databases</a> - Async
database access for SQLAlchemy core, with support for PostgreSQL, MySQL,
and SQLite.</li>
<li><a href="https://github.com/RobertCraigie/prisma-client-py">Prisma
Client Python</a> - An auto-generated, fully type safe ORM powered by
Pydantic and tailored specifically for your schema - supports SQLite,
PostgreSQL, MySQL, MongoDB, MariaDB and more.</li>
<li><a href="https://github.com/piccolo-orm/piccolo">Piccolo</a> - An
ORM / query builder which can work in async and sync modes, with a nice
admin GUI, and ASGI middleware.</li>
<li><a href="https://beanie-odm.dev">Beanie</a> - An async MongoDB ODM
built on <a href="https://github.com/mongodb/motor">motor</a> and <a
href="https://pydantic-docs.helpmanual.io">Pydantic</a>.</li>
</ul>
<h2 id="networking">Networking</h2>
<p><em>Libraries to communicate in your network.</em></p>
<ul>
<li><a href="https://github.com/ronf/asyncssh">AsyncSSH</a> - Provides
an asynchronous client and server implementation of the SSHv2
protocol.</li>
<li><a href="https://github.com/saghul/aiodns">aiodns</a> - Simple DNS
resolver for asyncio.</li>
<li><a href="https://github.com/stellarbit/aioping">aioping</a> - Fast
asyncio implementation of ICMP (ping) protocol.</li>
<li><a href="https://github.com/encode/httpx">httpx</a> - asynchronous
HTTP client for Python 3 with <a
href="https://github.com/psf/requests">requests</a> compatible API.</li>
</ul>
<h2 id="graphql">GraphQL</h2>
<p><em>Libraries to build GraphQL servers.</em></p>
<ul>
<li><a href="https://ariadnegraphql.org">Ariadne</a> - Schema-first
Python library for implementing GraphQL servers.</li>
<li><a href="https://tartiflette.io/">Tartiflette</a> - Schema-first
Python 3.6+ GraphQL engine built on top of
<code>libgraphqlparser</code>.</li>
<li><a href="https://strawberry.rocks">Strawberry</a> - Code-first
Python 3 GraphQL server with Django, Flask and FastAPI/Starlette
support.</li>
</ul>
<h2 id="testing">Testing</h2>
<p><em>Libraries to test asyncio based applications.</em></p>
<ul>
<li><a href="https://github.com/nhumrich/aiomock/">aiomock</a> - A
python mock library that supports async methods.</li>
<li><a href="https://github.com/Martiusweb/asynctest/">asynctest</a> -
Enhance the standard unittest package with features for testing. asyncio
libraries</li>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio">pytest-asyncio</a> -
Pytest support for asyncio.</li>
<li><a href="https://github.com/CircleUp/aresponses">aresponses</a> -
Asyncio http mocking. Similar to the <a
href="https://github.com/getsentry/responses">responses</a> library used
for <a href="https://github.com/requests/requests">requests</a>.</li>
<li><a
href="https://github.com/pnuckowski/aioresponses">aioresponses</a> -
Helper for mock/fake web requests in Python aiohttp package.</li>
</ul>
<h2 id="alternative-loops">Alternative Loops</h2>
<p><em>Alternative asyncio loop implementations.</em></p>
<ul>
<li><a href="https://github.com/MagicStack/uvloop">uvloop</a> - Ultra
fast implementation of asyncio event loop on top of libuv.</li>
</ul>
<h2 id="misc">Misc</h2>
<p><em>Other awesome asyncio libraries.</em></p>
<ul>
<li><a href="https://github.com/zh217/aiochan">aiochan</a> - CSP-style
concurrency with channels, select and multiprocessing on top of
asyncio.</li>
<li><a href="https://github.com/argaen/aiocache">aiocache</a> - Cache
manager for different backends.</li>
<li><a href="https://github.com/Tinche/aiofiles/">aiofiles</a> - File
support for asyncio.</li>
<li><a href="https://github.com/alexdelorenzo/aiopath">aiopath</a> -
Asynchronous <code>pathlib</code> for asyncio.</li>
<li><a href="https://github.com/qntln/aiodebug">aiodebug</a> - A tiny
library for monitoring and testing asyncio programs.</li>
<li><a href="https://github.com/cjrh/aiorun">aiorun</a> - A
<code>run()</code> function that handles all the usual boilerplate for
startup and graceful shutdown.</li>
<li><a href="https://github.com/artfwo/aiosc">aiosc</a> - Lightweight
Open Sound Control implementation.</li>
<li><a href="https://github.com/changyuheng/aioserial">aioserial</a> - A
drop-in replacement of <a
href="https://github.com/pyserial/pyserial">pySerial</a>.</li>
<li><a href="https://github.com/aio-libs/aiozipkin">aiozipkin</a> -
Distributed tracing instrumentation for asyncio with zipkin</li>
<li><a href="https://github.com/django/asgiref">asgiref</a> - Backend
utils for ASGI to WSGI integration, includes sync_to_async and
async_to_sync function wrappers.</li>
<li><a
href="https://github.com/ryananguiano/async_property">async_property</a>
- Python decorator for async properties.</li>
<li><a href="https://github.com/howie6879/ruia">ruia</a> - An async web
scraping micro-framework based on asyncio.</li>
<li><a
href="https://github.com/tomplus/kubernetes_asyncio">kubernetes_asyncio</a>
- Asynchronous client library for Kubernetes.</li>
<li><a href="https://github.com/aiokitchen/aiomisc">aiomisc</a> -
Miscellaneous utils for <code>asyncio</code>.</li>
<li><a href="https://taskiq-python.github.io/">taskiq</a> - Asynchronous
distributed task manager (like celery, but async).</li>
</ul>
<h2 id="writings">Writings</h2>
<p><em>Documentation, blog posts, and other awesome writing about
asyncio.</em></p>
<ul>
<li><a href="https://docs.python.org/3/library/asyncio.html">Official
asyncio documentation</a> - Asynchronous I/O, event loop, coroutines and
tasks.</li>
<li><a
href="http://masnun.com/2015/11/13/python-generators-coroutines-native-coroutines-and-async-await.html">Short
well-written intro to asyncio</a> - Generators, Coroutines, Native
Coroutines and async/await.</li>
<li><a
href="https://hackernoon.com/asyncio-for-the-working-python-developer-5c468e6e2e8e">AsyncIO
for the Working Python Developer</a> - A gentle introduction to
asynchronous programming from basic examples working up to URL
fetching.</li>
<li><a
href="https://pawelmhm.github.io/asyncio/python/aiohttp/2016/04/22/asyncio-aiohttp.html">Test
limits of Python aiohttp</a> - Making 1 million requests with
python-aiohttp.</li>
<li><a href="https://asgi.readthedocs.io/en/latest/">ASGI (Asynchronous
Server Gateway Interface)</a> - A spiritual successor to WSGI, intended
to provide a standard interface between async-capable Python web
servers, frameworks, and applications.</li>
<li><a
href="https://hackernoon.com/a-simple-introduction-to-pythons-asyncio-595d9c9ecf8c">First
Principles Introduction to Asyncio</a> - A no-buzzword first principles
introduction to the internal workings of asyncio.</li>
<li><a href="https://testdriven.io/blog/fastapi-crud/">Developing and
Testing an Asynchronous API with FastAPI and Pytest</a> - This tutorial
looks at how to develop and test an asynchronous API with FastAPI using
Test-Driven Development (TDD).</li>
<li><a
href="https://www.manning.com/books/python-concurrency-with-asyncio">Python
Concurrency with asyncio</a> - Learn how to speed up slow Python code
with concurrent programming and the cutting-edge asyncio library.</li>
</ul>
<h2 id="talks">Talks</h2>
<p><em>Recordings of awesome talks about asyncio.</em></p>
<ul>
<li><a href="https://youtu.be/ZzfHjytDceU">Topics of Interest (Python
Asyncio)</a> | <a href="https://youtu.be/lYe8W04ERnY">screencast</a> |
<a
href="https://speakerdeck.com/dabeaz/topics-of-interest-async">slides</a>
- PyCon Brasil 2015 keynote (David Beazley).</li>
<li><a
href="https://www.youtube.com/playlist?list=PLpEcQSRWP2IjVRlTUptdD05kG-UkJynQT">Python
Asynchronous I/O Walkthrough</a> - 8-part code walkthrough (Philip
Guo).</li>
<li><a
href="https://www.youtube.com/watch?v=m28fiN9y_r8&amp;t=132s">Async/await
in Python 3.5 and why it is awesome</a> - EuroPython 2016 (Yury
Selivanov).</li>
<li><a href="https://www.youtube.com/watch?v=E-1Y4kSsAFc">Fear and
Awaiting in Async: A Savage Journey to the Heart of the Coroutine
Dream</a> | <a
href="https://www.youtube.com/watch?v=Bm96RqNGbGo">screencast</a> -
PyOhio 2016 keynote (David Beazley).</li>
<li><a href="https://www.youtube.com/watch?v=iG6fr81xHKA">Asynchronous
Python for the Complete Beginner</a> | <a
href="https://speakerdeck.com/pycon2017/miguel-grinberg-asynchronous-python-for-the-complete-beginner">slides</a>
- PyCon 2017 (Miguel Grinberg).</li>
<li><a href="https://www.youtube.com/watch?v=F19R_M4Nay4">Demystifying
Pythons Async and Await Keywords</a> - JetBrains TV 2020 (Michael
Kennedy)</li>
</ul>
<h2 id="alternatives-to-asyncio">Alternatives to asyncio</h2>
<p><em>Alternative approaches to async programming in Python, some of
which attempt to support some compatibility with <code>asyncio</code>,
others are not compatible at all.</em></p>
<ul>
<li><a href="https://github.com/dabeaz/curio">curio</a> - The coroutine
concurrency library.
<ul>
<li><a href="https://github.com/dabeaz/curio/issues/190">Curio-Asyncio
Bridge</a> - basic curio -&gt; asyncio coroutine bridge.</li>
</ul></li>
<li><a href="https://github.com/python-trio/trio">trio</a> - Pythonic
async I/O for humans and snake people.
<ul>
<li><a
href="https://github.com/python-trio/trio-asyncio">trio-asyncio</a> -
re-implementation of the asyncio mainloop on top of Trio.</li>
</ul></li>
<li><a href="https://github.com/agronholm/anyio">AnyIO</a> - High level
asynchronous concurrency and networking framework that works on top of
either trio or asyncio.</li>
</ul>
<p><a href="https://github.com/timofurrer/awesome-asyncio">asyncio.md
Github</a></p>