18.5. asyncio
— Entrées/Sorties asynchrone, boucle d’évènements, coroutines et tâches¶
Nouveau dans la version 3.4.
Code source : Lib/asyncio/
Ce module fournit l’infrastructure pour écrire des programmes à fil d’exécution unique (single-thread en anglais) mais permettant l’exécution de code concurrent en utilisant les coroutines, les accès multiplexés aux entrées-sorties par l’intermédiaire de sockets ou autres ressources, la gestion de clients et serveurs réseaux et d’autres fonctions primitives associées. Voici une liste plus détaillée du contenu du paquet :
une boucle d’évènements prête à l’emploi dont les implémentations sont spécifiques à leur plateforme ;
Des abstractions pour les couches transport et protocole (similaire à celles proposées par Twisted) ;
pour la gestion effective de TCP, UDP, SSL, la communication inter-processus par tubes, les appels différés, et autres (certains peuvent être dépendant du système) ;
une classe
Future
qui imite celle duconcurrent.futures
module, mais qui est adaptée pour fonctionner avec la boucle d’évènements ;des coroutines et tâches qui se basent sur
yield from
(PEP 380), pour écrire du code concurrent de manière séquentielle ;annulation de la gestion de la classe
Future
s et coroutines ;des primitives de synchronisation à utiliser entre des coroutines dans un fil d’exécution unique, en imitant celles présentes dans le module
threading
;une interface pour déléguer des tâches à un groupe de fils d’exécutions, lorsque vous avez absolument besoin d’utiliser une bibliothèque qui effectue des entrées-sorties bloquantes.
Programmer de façon asynchrone est plus complexe que programmer d’une façon séquentielle : lisez la page Develop with asyncio qui liste les pièges fréquents et explique la manière de les éviter. Activer le mode de débogage d’asyncio pendant le développement afin de détecter les problèmes courants.
Table des matières :
- 18.5.1. Base Event Loop
- 18.5.1.1. Exécuter une boucle d’évènements
- 18.5.1.2. Appels
- 18.5.1.3. Appels différés
- 18.5.1.4. Futurs
- 18.5.1.5. Tâches
- 18.5.1.6. Créer des connections
- 18.5.1.7. Attendre des connections
- 18.5.1.8. Surveiller des descripteurs de fichiers
- 18.5.1.9. Opérations bas niveau sur les socket
- 18.5.1.10. Résout le nom d’hôte
- 18.5.1.11. Connect pipes
- 18.5.1.12. Signaux UNIX
- 18.5.1.13. Exécuteur
- 18.5.1.14. API de gestion d’erreur
- 18.5.1.15. Mode débogage
- 18.5.1.16. Serveur
- 18.5.1.17. Handle
- 18.5.1.18. Exemples de boucles d’évènements
- 18.5.2. Boucles d’évènements
- 18.5.3. Tâches et coroutines
- 18.5.4. Transports et protocoles (APi basée sur des fonctions de rappel)
- 18.5.5. Streams (coroutine based API)
- 18.5.6. Subprocess
- 18.5.7. Primitives de synchronisation
- 18.5.8. Queues
- 18.5.9. Programmer avec asyncio
- 18.5.9.1. Mode de débogage d”asyncio
- 18.5.9.2. Annulation
- 18.5.9.3. Concourance et multithreading
- 18.5.9.4. Gérer les fonctions bloquantes correctement
- 18.5.9.5. Journalisation
- 18.5.9.6. Détecte les coroutines qui ne sont jamais exécutées
- 18.5.9.7. Detect exceptions never consumed
- 18.5.9.8. Chaîner les coroutines correctement
- 18.5.9.9. Pending task destroyed
- 18.5.9.10. Close transports and event loops