Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
modul:m323:learningunits:lu03:callbacks [2024/09/11 09:10] – [Asynchron Programmieren in Python] kmaurizimodul:m323:learningunits:lu03:callbacks [2024/09/11 09:27] (aktuell) – [Callbacks in der Asynchronen Programmierung] kmaurizi
Zeile 41: Zeile 41:
  
 ===== Callbacks in der Asynchronen Programmierung ===== ===== Callbacks in der Asynchronen Programmierung =====
 +
 +<WRAP center round info 60%>
 +Wir werden das asynchrone Programmieren nicht vertiefen am BZZ. Dies dürfen Sie dann an der Fachhochschule 😉
 +</WRAP>
 +
  
 Asynchrone Programmierung ist ein Ansatz, bei dem Operationen ausgeführt werden können, ohne den Ablauf des gesamten Programms zu blockieren. Ein häufiges Szenario für asynchrone Aufrufe sind Netzwerkanfragen, z. B. API-Aufrufe, bei denen nicht vorhersehbar ist, wie lange sie dauern werden. Asynchrone Programmierung ist ein Ansatz, bei dem Operationen ausgeführt werden können, ohne den Ablauf des gesamten Programms zu blockieren. Ein häufiges Szenario für asynchrone Aufrufe sind Netzwerkanfragen, z. B. API-Aufrufe, bei denen nicht vorhersehbar ist, wie lange sie dauern werden.
Zeile 66: Zeile 71:
   * **''await''**: Das Schlüsselwort ''await'' wird verwendet, um das Ergebnis einer asynchronen Operation abzurufen. Es kann nur innerhalb einer ''async''-Funktion verwendet werden.   * **''await''**: Das Schlüsselwort ''await'' wird verwendet, um das Ergebnis einer asynchronen Operation abzurufen. Es kann nur innerhalb einer ''async''-Funktion verwendet werden.
  
-=== Beispiele === 
  
-== Beispiel: Parallele Ausführung von Aufgaben ==+=== Beispiel: Parallele Ausführung von Aufgaben ===
  
 Eine der Hauptvorteile von asynchroner Programmierung ist die Fähigkeit, mehrere Aufgaben parallel auszuführen, insbesondere wenn es um Aufgaben geht, die auf externe Ressourcen warten, wie z.B. Netzwerkanfragen. Eine der Hauptvorteile von asynchroner Programmierung ist die Fähigkeit, mehrere Aufgaben parallel auszuführen, insbesondere wenn es um Aufgaben geht, die auf externe Ressourcen warten, wie z.B. Netzwerkanfragen.
Zeile 92: Zeile 96:
 </code> </code>
  
-== Beispiel: Asynchrone Dateioperation ==+=== Beispiel: Asynchrone Dateioperation ===
  
 In diesem Beispiel zeigen wir, wie Dateioperationen asynchron ablaufen können. Das Beispiel liest den Inhalt von zwei Dateien asynchron. In diesem Beispiel zeigen wir, wie Dateioperationen asynchron ablaufen können. Das Beispiel liest den Inhalt von zwei Dateien asynchron.
Zeile 115: Zeile 119:
 </code> </code>
  
-== Beispiel: API-Call mit Zeitüberschreitung ==+=== Beispiel: API-Call mit Zeitüberschreitung ===
  
 Ein häufiges Problem bei Netzwerkanfragen ist die Notwendigkeit, eine maximale Wartezeit festzulegen. Dies kann durch die Verwendung von Timeout-Parametern und asynchroner Programmierung gelöst werden. Ein häufiges Problem bei Netzwerkanfragen ist die Notwendigkeit, eine maximale Wartezeit festzulegen. Dies kann durch die Verwendung von Timeout-Parametern und asynchroner Programmierung gelöst werden.
Zeile 126: Zeile 130:
     async with httpx.AsyncClient() as client:     async with httpx.AsyncClient() as client:
         try:         try:
-            response = await client.get('https://run.mocky.io/v3/685db531-06e7-4d66-bbf6-99de9f2feab3', timeout=5)+            response = await client.get('https://run.mocky.io/v3/685db531-06e7-4d66-bbf6-99de9f2feab3?mocky-delay=3000ms', timeout=5)
             print(response.text)             print(response.text)
         except httpx.RequestError as exc:         except httpx.RequestError as exc:
Zeile 138: Zeile 142:
 </code> </code>
  
-== Beispiel: Daten von mehreren APIs gleichzeitig abrufen ==+=== Beispiel: Daten von mehreren APIs gleichzeitig abrufen ===
  
 Hier zeigen wir, wie mehrere API-Aufrufe parallel ablaufen können, um die Effizienz zu verbessern. Hier zeigen wir, wie mehrere API-Aufrufe parallel ablaufen können, um die Effizienz zu verbessern.
Zeile 145: Zeile 149:
 import httpx import httpx
 import asyncio import asyncio
 +
  
 async def fetch_data(url): async def fetch_data(url):
     async with httpx.AsyncClient() as client:     async with httpx.AsyncClient() as client:
         response = await client.get(url)         response = await client.get(url)
-        return response.json()+        return response.text 
  
 async def main(): async def main():
     urls = [     urls = [
-        'https://run.mocky.io/v3/685db531-06e7-4d66-bbf6-99de9f2feab3', +        'https://run.mocky.io/v3/685db531-06e7-4d66-bbf6-99de9f2feab3?mocky-delay=3000ms', 
-        'https://run.mocky.io/v3/2b9e0b96-6249-4e68-b83e-3da492bddbc0'+        'https://run.mocky.io/v3/685db531-06e7-4d66-bbf6-99de9f2feab3?mocky-delay=2000ms'
     ]     ]
     results = await asyncio.gather(*(fetch_data(url) for url in urls))     results = await asyncio.gather(*(fetch_data(url) for url in urls))
     for result in results:     for result in results:
         print(result)         print(result)
 +
  
 if __name__ == '__main__': if __name__ == '__main__':
  • modul/m323/learningunits/lu03/callbacks.1726038634.txt.gz
  • Zuletzt geändert: 2024/09/11 09:10
  • von kmaurizi