Asyncio génial
Une liste soigneusement organisée de superbes frameworks, bibliothèques, logiciels et ressources Python asyncio.
Le module Python asyncio introduit dans la bibliothèque standard avec Python 3.4 fournit une infrastructure pour l'écriture de code simultané monothread à l'aide de coroutines, le multiplexage des accès E/S sur les sockets et autres ressources, l'exécution de clients et de serveurs réseau et d'autres primitives associées.
Asyncio n'est pas vraiment une toute nouvelle technologie mais elle semble être très tendance depuis quelques années - notamment dans la communauté Python et avec la sortie de Python 3.4 en mars 2014. Il est donc assez difficile de se tenir au courant avec les packages les plus géniaux du marché. Trouvez quelques-uns de ces packages géniaux ici et s'il vous en manque un, nous comptons sur vous pour créer un problème ou une pull request avec votre suggestion.
Contenu
- Cadres Web
- Files d'attente de messages
- Pilotes de base de données
- Réseautage
- GraphQL
- Essai
- Boucles alternatives
- Divers
- Écrits
- Pourparlers
- Alternatives à asyncio
Cadres Web
Bibliothèques pour créer des applications Web.
- FastAPI - Un framework API Python 3.6+ très hautes performances basé sur des astuces de type. Propulsé par Starlette et Pydantic.
- Django – Un framework Web Python établi de haut niveau avec une énorme communauté et un écosystème.
- Starlette - Un framework/boîte à outils ASGI léger pour créer des services hautes performances.
- aiohttp - Client/serveur HTTP pour asyncio (PEP-3156).
- sanic - Serveur Web Python 3.5+ écrit pour aller vite.
- Quart - Un microframework Web asyncio avec la même API que Flask.
- autoroute - WebSocket et WAMP prenant en charge asyncio et Twisted, pour les clients et les serveurs.
- websockets - Une bibliothèque pour créer des serveurs et des clients WebSocket en Python en mettant l'accent sur l'exactitude et la simplicité.
- Tornado - Framework Web performant et bibliothèque de réseau asynchrone.
- uvicorn - Le serveur ASGI ultra-rapide.
Files d'attente de messages
Bibliothèques pour implémenter des applications utilisant des files d'attente de messages.
- aioamqp - Implémentation AMQP utilisant asyncio.
- pyzmq - Liaisons Python pour ZeroMQ.
- aiozmq - Intégration alternative d'Asyncio avec ZeroMQ.
- crossbar - Crossbar.io est une plate-forme de mise en réseau pour les applications distribuées et microservices.
- asyncio-nats - Client pour le système de messagerie NATS.
- aiokafka - Client pour Apache Kafka.
Pilotes de base de données
Bibliothèques pour se connecter aux bases de données.
- asyncpg - Bibliothèque client de base de données Fast PostgreSQL pour Python/asyncio.
- asyncpgsa - Asyncpg avec prise en charge principale de sqlalchemy.
- aiopg - Bibliothèque pour accéder à une base de données PostgreSQL.
- aiomysql - Bibliothèque pour accéder à une base de données MySQL
- aioodbc - Bibliothèque pour accéder à une base de données ODBC.
- motor - Le pilote Python asynchrone pour MongoDB.
- redis-py - Client Redis Python (qui inclut désormais aioreadis).
- aiocouchdb - Client CouchDB construit sur aiohttp (asyncio).
- aioinflux - Client InfluxDB construit sur aiohttp.
- aioes - Pilote compatible Asyncio pour elasticsearch.
- peewee-async - Implémentation ORM basée sur peewee et aiopg.
- GINO - est un ORM Python asynchrone léger basé sur le noyau SQLAlchemy, avec un dialecte asyncpg.
- Tortoise ORM - ORM multi-backend natif avec API de type Django et gestion facile des relations.
- Bases de données - Accès à la base de données asynchrone pour le noyau SQLAlchemy, avec prise en charge de PostgreSQL, MySQL et SQLite.
- Prisma Client Python - Un ORM généré automatiquement, entièrement sécurisé, alimenté par Pydantic et adapté spécifiquement à votre schéma - prend en charge SQLite, PostgreSQL, MySQL, MongoDB, MariaDB et plus encore.
- Piccolo - Un générateur ORM/requêtes qui peut fonctionner en modes asynchrone et synchronisé, avec une belle interface graphique d'administration et un middleware ASGI.
- Beanie - Un ODM MongoDB asynchrone construit sur Motor et Pydantic.
Réseautage
Des bibliothèques pour communiquer dans votre réseau.
- AsyncSSH - Fournit une implémentation client et serveur asynchrone du protocole SSHv2.
- aiodns - Résolveur DNS simple pour asyncio.
- aioping - Implémentation asyncio rapide du protocole ICMP (ping).
- httpx - client HTTP asynchrone pour Python 3 avec API compatible avec les requêtes.
GraphQL
Bibliothèques pour créer des serveurs GraphQL.
- Ariadne - Bibliothèque Python Schema-first pour l'implémentation de serveurs GraphQL.
- Tartiflette - Moteur GraphQL Python 3.6+ de premier plan construit sur
libgraphqlparser
. - Strawberry - Serveur Python 3 GraphQL code-first avec prise en charge de Django, Flask et FastAPI/Starlette.
Essai
Bibliothèques pour tester les applications basées sur asyncio.
- aiomock - Une bibliothèque simulée Python qui prend en charge les méthodes asynchrones.
- asynctest - Améliore le package unittest standard avec des fonctionnalités de test. bibliothèques asyncio
- pytest-asyncio - Prise en charge Pytest pour asyncio.
- aresponses - Asyncio http moqueur. Semblable à la bibliothèque de réponses utilisée pour les requêtes.
- aioresponses - Aide pour les requêtes Web fictives/fausses dans le package Python aiohttp.
Boucles alternatives
Implémentations alternatives de boucles asyncio.
- uvloop - Implémentation ultra rapide de la boucle d'événements asyncio au-dessus de libuv.
Divers
Autres bibliothèques asyncio géniales.
- aiochan - Concurrence de style CSP avec canaux, sélection et multitraitement au-dessus d'asyncio.
- aiocache - Gestionnaire de cache pour différents backends.
- aiofiles - Prise en charge des fichiers pour asyncio.
- aiopath -
pathlib
asynchrone pour asyncio. - aiodebug - Une petite bibliothèque pour surveiller et tester les programmes asyncio.
- aiorun - Une fonction
run()
qui gère tous les passe-partout habituels pour le démarrage et l'arrêt progressif. - aiosc - Implémentation légère d'Open Sound Control.
- aioserial - Un remplacement immédiat de pySerial.
- aiozipkin - Instrumentation de traçage distribuée pour asyncio avec zipkin
- asgiref - Utilitaires backend pour l'intégration ASGI vers WSGI, inclut les wrappers de fonctions sync_to_async et async_to_sync.
- async_property - Décorateur Python pour les propriétés asynchrones.
- ruia - Un micro-framework de scraping Web asynchrone basé sur asyncio.
- kubernetes_asyncio - Bibliothèque client asynchrone pour Kubernetes.
- aiomisc - Divers utilitaires pour
asyncio
. - taskiq - Gestionnaire de tâches distribué asynchrone (comme le céleri, mais asynchrone).
Écrits
Documentation, articles de blog et autres écrits intéressants sur asyncio.
- Documentation officielle asyncio - E/S asynchrones, boucle d'événements, coroutines et tâches.
- Courte introduction bien écrite à asyncio - Générateurs, Coroutines, Coroutines natives et async/await.
- AsyncIO pour le développeur Python qui travaille - Une introduction douce à la programmation asynchrone depuis des exemples de base jusqu'à la récupération d'URL.
- Testez les limites de Python aiohttp - Effectuer 1 million de requêtes avec python-aiohttp.
- ASGI (Asynchronous Server Gateway Interface) - Un successeur spirituel de WSGI, destiné à fournir une interface standard entre les serveurs Web, les frameworks et les applications Python asynchrones.
- Introduction aux premiers principes d'Asyncio - Une introduction aux premiers principes sans mot à la mode du fonctionnement interne d'asyncio.
- Développement et test d'une API asynchrone avec FastAPI et Pytest - Ce didacticiel explique comment développer et tester une API asynchrone avec FastAPI à l'aide du développement piloté par les tests (TDD).
- Concurrence Python avec asyncio – Apprenez à accélérer le code Python lent avec la programmation simultanée et la bibliothèque asyncio de pointe.
Pourparlers
Enregistrements de discussions géniales sur asyncio.
- Sujets d'intérêt (Python Asyncio) | capture d'écran | diapositives - Keynote PyCon Brasil 2015 (David Beazley).
- Procédure pas à pas d'E/S asynchrones Python - Procédure pas à pas de code en 8 parties (Philip Guo).
- Async/await dans Python 3.5 et pourquoi c'est génial - EuroPython 2016 (Yury Selivanov).
- Peur et attente dans Async : un voyage sauvage au cœur du rêve coroutine | screencast - keynote de PyOhio 2016 (David Beazley).
- Python asynchrone pour le débutant complet | diapositives - PyCon 2017 (Miguel Grinberg).
- Démystifier les mots-clés Async et Await de Python - JetBrains TV 2020 (Michael Kennedy)
Alternatives à asyncio
Approches alternatives de la programmation asynchrone en Python, dont certaines tentent de prendre en charge une certaine compatibilité avec asyncio
, d'autres ne sont pas du tout compatibles.
- curio - La bibliothèque de simultanéité coroutine.
- Curio-Asyncio Bridge - curiosité de base -> pont coroutine asyncio.
- trio - E/S asynchrones pythoniques pour les humains et les serpents.
- trio-asyncio - réimplémentation de la boucle principale asyncio au-dessus de Trio.
- AnyIO - Cadre de concurrence asynchrone et de mise en réseau de haut niveau qui fonctionne sur trio ou asyncio.