Chapitre 21. Programmation asynchrone
Cet ouvrage a été traduit à l'aide de l'IA. Tes réactions et tes commentaires sont les bienvenus : translation-feedback@oreilly.com
Le problème avec les approches normales de la programmation asynchrone, c'est qu'il s'agit de propositions tout ou rien. Tu réécris tout ton code pour qu'il ne se bloque pas ou tu perds ton temps.
Alvaro Videla et Jason J. W. Williams, RabbitMQ en action1
Ce chapitre aborde trois sujets majeurs qui sont étroitement liés :
-
Les constructions Python
async def,await,async with, etasync for. -
Objets supportant ces constructions : coroutines natives et variantes asynchrones des gestionnaires de contexte, itérables, générateurs et compréhensions.
-
asyncio et autres bibliothèques asynchrones
Ce chapitre s'appuie sur les idées des itérables et des générateurs(chapitre 17, en particulier "Coroutines classiques"), des gestionnaires de contexte(chapitre 18) et des concepts généraux de la programmation concurrente(chapitre 19).
Nous allons étudier des clients HTTP concurrents similaires à ceux que nous avons vus au chapitre 20, réécrits avec des coroutines natives et des gestionnaires de contexte asynchrones, en utilisant la même bibliothèque HTTPX que précédemment, mais maintenant par le biais de son API asynchrone. Nous verrons également comment éviter de bloquer la boucle d'événements en déléguant les opérations lentes à un thread ou à un exécuteur de processus.
Après les exemples de clients HTTP, nous verrons ...