Utiliser async pour exécuter des tâches en parallèle

Introduction à FastAPI

Matt Eckerle

Software and Data Engineering Leader

Pourquoi utiliser async ? Burgers concurrents !

Burgers séquentiels

Clientes et clients en file pour des burgers préparés et servis en série

Burgers concurrents

Clientes et clients en file pour des burgers préparés et servis en parallèle

1 https://fastapi.tiangolo.com/async/
Introduction à FastAPI

async en pratique

Burgers séquentiels

Définir une fonction pour obtenir des burgers

# Ce n'est pas asynchrone
def get_sequential_burgers(number: int):
    # Traitement séquentiel
    return burgers

Appeler la fonction de façon séquentielle

burgers = get_burgers(2)

Burgers concurrents

Définir une fonction pour obtenir des burgers

async def get_burgers(number: int):
    # Traitement asynchrone
    return burgers

Appeler la fonction de façon asynchrone

burgers = await get_burgers(2)
Introduction à FastAPI

FastAPI avec async

Si l'on peut :

results = await some_library()

Alors utiliser async def :

@app.get('/')
async def read_results():
    results = await some_library()
    return results

Remarque Utilisez await seulement dans des fonctions créées avec async def

Introduction à FastAPI

Quand utiliser async

Utiliser async

Si l'application doit attendre la réponse d'autres systèmes

  • API externe
  • Base de données

Exemples

  • Requêtes HTTP
  • Interroger des bases de données
  • Lecture de fichiers

Ne pas utiliser async

Tâches exigeantes pour le CPU

Exemples

  • Traitement audio ou image
  • Vision par ordinateur
  • Machine Learning
  • Apprentissage profond

Si l'on n'est pas certain

Introduction à FastAPI

Passons à la pratique !

Introduction à FastAPI

Preparing Video For Download...