Tolles Asyncio
Eine sorgfältig zusammengestellte Liste fantastischer Python-Asyncio-Frameworks, -Bibliotheken, -Software und -Ressourcen.
Das mit Python 3.4 in die Standardbibliothek eingeführte Python-Asyncio-Modul bietet eine Infrastruktur zum Schreiben von gleichzeitigem Single-Thread-Code mithilfe von Coroutinen, zum Multiplexen des E/A-Zugriffs über Sockets und anderen Ressourcen, zum Ausführen von Netzwerk-Clients und -Servern sowie für andere verwandte Grundelemente.
Asyncio ist nicht wirklich eine brandneue Technologie, scheint jedoch seit einigen Jahren sehr im Trend zu liegen – insbesondere in der Python-Community und mit der Veröffentlichung von Python 3.4 im März 2014. Daher ist es ziemlich schwierig, sich auf dem Laufenden zu halten mit den tollsten Paketen da draußen. Hier finden Sie einige dieser tollen Pakete. Wenn Sie eines vermissen, können Sie mit Ihrem Vorschlag ein Issue oder einen Pull Request erstellen.
Inhalt
- Web-Frameworks
- Nachrichtenwarteschlangen
- Datenbanktreiber
- Vernetzung
- GraphQL
- Testen
- Alternative Schleifen
- Sonstiges
- Schriften
- Gespräche
- Alternativen zu Asyncio
Web-Frameworks
Bibliotheken zum Erstellen von Webanwendungen.
- FastAPI – Ein sehr leistungsstarkes Python 3.6+ API-Framework basierend auf Typhinweisen. Unterstützt von Starlette und Pydantic.
- Django – Ein etabliertes, hochwertiges Python-Webframework mit einer riesigen Community und einem riesigen Ökosystem.
- Starlette – Ein leichtes ASGI-Framework/Toolkit zum Aufbau leistungsstarker Dienste.
- aiohttp – HTTP-Client/Server für Asyncio (PEP-3156).
- sanic – Python 3.5+ Webserver, der auf Schnelligkeit ausgelegt ist.
- Quart – Ein asynchrones Web-Mikroframework mit derselben API wie Flask.
- autobahn – WebSocket und WAMP unterstützen Asyncio und Twisted für Clients und Server.
- websockets – Eine Bibliothek zum Erstellen von WebSocket-Servern und -Clients in Python mit Schwerpunkt auf Korrektheit und Einfachheit.
- Tornado – Leistungsstarkes Web-Framework und asynchrone Netzwerkbibliothek.
- uvicorn – Der blitzschnelle ASGI-Server.
Nachrichtenwarteschlangen
Bibliotheken zur Implementierung von Anwendungen mithilfe von Nachrichtenwarteschlangen.
- aioamqp – AMQP-Implementierung mit Asyncio.
- pyzmq – Python-Bindungen für ZeroMQ.
- aiozmq – Alternative Asyncio-Integration mit ZeroMQ.
- Crossbar – Crossbar.io ist eine Netzwerkplattform für verteilte und Microservice-Anwendungen.
- asyncio-nats – Client für das NATS-Nachrichtensystem.
- aiokafka – Client für Apache Kafka.
Datenbanktreiber
Bibliotheken zur Verbindung mit Datenbanken.
- asyncpg – Schnelle PostgreSQL-Datenbank-Clientbibliothek für Python/asyncio.
- asyncpgsa – Asyncpg mit SQLalchemy-Kernunterstützung.
- aiopg – Bibliothek für den Zugriff auf eine PostgreSQL-Datenbank.
- aiomysql – Bibliothek für den Zugriff auf eine MySQL-Datenbank
- aioodbc – Bibliothek für den Zugriff auf ODBC-Datenbanken.
- motor – Der asynchrone Python-Treiber für MongoDB.
- redis-py – Redis-Python-Client (der jetzt aioreadis enthält).
- aiocouchdb – CouchDB-Client, der auf aiohttp (asyncio) basiert.
- aioinflux – InfluxDB-Client, der auf aiohttp basiert.
- aioes – Asyncio-kompatibler Treiber für Elasticsearch.
- peewee-async – ORM-Implementierung basierend auf Peewee und Aiopg.
- GINO – ist ein leichtes asynchrones Python-ORM, das auf dem SQLAlchemy-Kern basiert, mit asyncpg-Dialekt.
- Tortoise ORM – natives Multi-Backend-ORM mit Django-ähnlicher API und einfacher Beziehungsverwaltung.
- Datenbanken – Asynchroner Datenbankzugriff für den SQLAlchemy-Kern, mit Unterstützung für PostgreSQL, MySQL und SQLite.
- Prisma Client Python – ein automatisch generiertes, vollständig typsicheres ORM, das von Pydantic unterstützt und speziell auf Ihr Schema zugeschnitten wird – unterstützt SQLite, PostgreSQL, MySQL, MongoDB, MariaDB und mehr.
- Piccolo – Ein ORM-/Abfrage-Builder, der im asynchronen und synchronisierten Modus arbeiten kann, mit einer schönen Admin-GUI und ASGI-Middleware.
- Beanie – Ein asynchrones MongoDB-ODM, das auf Motor und Pydantic basiert.
Vernetzung
Bibliotheken zur Kommunikation in Ihrem Netzwerk.
- AsyncSSH – Bietet eine asynchrone Client- und Serverimplementierung des SSHv2-Protokolls.
- aiodns – Einfacher DNS-Resolver für Asyncio.
- aioping – Schnelle asynchrone Implementierung des ICMP-Protokolls (Ping).
- httpx – asynchroner HTTP-Client für Python 3 mit anforderungskompatibler API.
GraphQL
Bibliotheken zum Erstellen von GraphQL-Servern.
- Ariadne – Schema-First-Python-Bibliothek zur Implementierung von GraphQL-Servern.
- Tartiflette – Schema-first Python 3.6+ GraphQL-Engine, die auf
libgraphqlparser
aufbaut. - Strawberry – Code-first Python 3 GraphQL-Server mit Django-, Flask- und FastAPI/Starlette-Unterstützung.
Testen
Bibliotheken zum Testen asynchroner Anwendungen.
- aiomock – Eine Python-Mock-Bibliothek, die asynchrone Methoden unterstützt.
- asynctest – Erweitern Sie das Standard-Unittest-Paket um Funktionen zum Testen. Asyncio-Bibliotheken
- pytest-asyncio – Pytest-Unterstützung für Asyncio.
- aresponses – Asyncio http spotting. Ähnlich der Antwortbibliothek, die für Anfragen verwendet wird.
- aioresponses – Helfer für Schein-/Fake-Webanfragen im Python-aiohttp-Paket.
Alternative Schleifen
Alternative Asyncio-Loop-Implementierungen.
- uvloop – Ultraschnelle Implementierung einer Asyncio-Ereignisschleife zusätzlich zu libuv.
Sonstiges
Andere tolle Asyncio-Bibliotheken.
- aiochan – Parallelität im CSP-Stil mit Kanälen, Auswahl und Multiverarbeitung zusätzlich zu Asyncio.
- aiocache – Cache-Manager für verschiedene Backends.
- aiofiles – Dateiunterstützung für Asyncio.
- aiopath – Asynchrone
pathlib
für Asyncio. - aiodebug – Eine kleine Bibliothek zum Überwachen und Testen von Asyncio-Programmen.
- aiorun – Eine
run()
Funktion, die alle üblichen Boilerplates für den Start und das ordnungsgemäße Herunterfahren verarbeitet. - aiosc – Leichte Open Sound Control-Implementierung.
- aioserial – Ein direkter Ersatz für pySerial.
- aiozipkin – Verteilte Tracing-Instrumentierung für Asyncio mit Zipkin
- asgiref – Backend-Dienstprogramme für die ASGI-zu-WSGI-Integration, einschließlich sync_to_async- und async_to_sync-Funktionswrapper.
- async_property – Python-Dekorator für asynchrone Eigenschaften.
- ruia – Ein asynchrones Web-Scraping-Mikroframework basierend auf Asyncio.
- kubernetes_asyncio – Asynchrone Client-Bibliothek für Kubernetes.
- aiomisc – Verschiedene Dienstprogramme für
asyncio
. - taskiq – Asynchroner verteilter Task-Manager (wie Sellery, aber asynchron).
Schriften
Dokumentation, Blog-Beiträge und andere tolle Texte über Asyncio.
- Offizielle Asyncio-Dokumentation – Asynchrone E/A, Ereignisschleife, Coroutinen und Aufgaben.
- Kurze, gut geschriebene Einführung in Asyncio – Generatoren, Coroutinen, Native Coroutinen und Async/Await.
- AsyncIO für den arbeitenden Python-Entwickler – Eine sanfte Einführung in die asynchrone Programmierung, von einfachen Beispielen bis hin zum URL-Abruf.
- Testgrenzen von Python aiohttp – 1 Million Anfragen mit python-aiohttp stellen.
- ASGI (Asynchronous Server Gateway Interface) – Ein spiritueller Nachfolger von WSGI, der eine Standardschnittstelle zwischen asynchronen Python-Webservern, Frameworks und Anwendungen bereitstellen soll.
- Einführung in die ersten Prinzipien von Asyncio – Eine Einführung in die internen Abläufe von Asyncio ohne Schlagworte.
- Entwickeln und Testen einer asynchronen API mit FastAPI und Pytest – In diesem Tutorial erfahren Sie, wie Sie eine asynchrone API mit FastAPI mithilfe von Test-Driven Development (TDD) entwickeln und testen.
- Python-Parallelität mit Asyncio – Erfahren Sie, wie Sie langsamen Python-Code mit gleichzeitiger Programmierung und der hochmodernen Asyncio-Bibliothek beschleunigen.
Gespräche
Aufzeichnungen großartiger Vorträge über Asyncio.
- Interessante Themen (Python Asyncio) | Screencast | Folien – Keynote zur PyCon Brasil 2015 (David Beazley).
- Python Asynchronous I/O Walkthrough – 8-teiliger Code-Walkthrough (Philip Guo).
- Async/await in Python 3.5 und warum es großartig ist – EuroPython 2016 (Yury Selivanov).
- Angst und Warten in Async: Eine wilde Reise zum Herzen des Coroutine-Traums | Screencast – PyOhio 2016 Keynote (David Beazley).
- Asynchrones Python für den kompletten Anfänger | Folien – PyCon 2017 (Miguel Grinberg).
- Entmystifizierung der Async- und Await-Schlüsselwörter von Python – JetBrains TV 2020 (Michael Kennedy)
Alternativen zu Asyncio
Alternative Ansätze zur asynchronen Programmierung in Python, von denen einige versuchen, eine gewisse Kompatibilität mit asyncio
zu unterstützen, andere sind überhaupt nicht kompatibel.
- curio – Die Coroutine-Parallelitätsbibliothek.
- Curio-Asyncio-Brücke – grundlegendes Curio -> Asyncio-Coroutine-Brücke.
- Trio – Pythonische asynchrone E/A für Menschen und Schlangenmenschen.
- trio-asyncio – Neuimplementierung des Asyncio-Mainloops auf Trio.
- AnyIO – Asynchrones Parallelitäts- und Netzwerk-Framework auf hohem Niveau, das entweder auf Trio oder Asyncio aufsetzt.