Kapitel 21. Asynchrone Programmierung

Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com

Das Problem mit den üblichen Ansätzen zur asynchronen Programmierung ist, dass es sich um Alles-oder-Nichts-Ansätze handelt. Entweder du schreibst deinen gesamten Code so um, dass er nicht blockiert, oder du verschwendest nur deine Zeit.

Alvaro Videla und Jason J. W. Williams, RabbitMQ in Aktion1

Dieses Kapitel behandelt drei wichtige Themen, die eng miteinander verbunden sind:

  • Die Python-Konstrukte async def, await, async with und async for

  • Objekte, die diese Konstrukte unterstützen: native Coroutines und asynchrone Varianten von Kontextmanagern, Iterables, Generatoren und Comprehensions

  • asyncio und andere asynchrone Bibliotheken

Dieses Kapitel baut auf den Ideen von Iterables und Generatoren(Kapitel 17, insbesondere "Klassische Coroutines"), Kontextmanagern(Kapitel 18) und allgemeinen Konzepten der gleichzeitigen Programmierung(Kapitel 19) auf.

Wir werden uns mit konkurrierenden HTTP-Clients beschäftigen, die denen aus Kapitel 20 ähneln und mit nativen Coroutines und asynchronen Kontextmanagern neu geschrieben wurden. Dabei verwenden wir dieselbe HTTPX-Bibliothek wie zuvor, aber jetzt über ihre asynchrone API. Wir werden auch sehen, wie wir das Blockieren der Ereignisschleife vermeiden können, indem wir langsame Operationen an einen Thread oder Prozessausführer delegieren.

Nach den HTTP-Client-Beispielen ...

Get Fließendes Python, 2. Auflage now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.