Performance (Fast API)

La performance dans FastAPI fait référence à la capacité de l’application à traiter rapidement les requêtes HTTP, même sous forte charge, tout en utilisant efficacement les ressources serveur.

FastAPI est conçu pour être rapide : il repose sur Starlette et Pydantic, utilise l’asynchronisme natif avec async/await et génère du code optimisé pour la validation des données. Cela en fait un framework particulièrement adapté aux applications nécessitant des réponses rapides et beaucoup de requêtes simultanées.


Comment ça fonctionne dans FastAPI

1. Utilisation de l’asynchronisme

2. Validation rapide des données

3. Optimisation des requêtes et accès aux données

4. Mise en cache et réponses rapides

5. Scalabilité


Exemple conceptuel


Bonnes pratiques


Pourquoi c’est important


En résumé

Fonctions :

  • Performance avec Fast API

    Exemple de code :

    from fastapi import FastAPI
    from fastapi.responses import JSONResponse
    from functools import lru_cache
    import time
    
    app = FastAPI()
    
    # Fonction simulant un calcul coûteux
    @lru_cache(maxsize=32)  # Mise en cache des 32 derniers résultats
    def expensive_computation(x: int):
        time.sleep(2)  # Simule un traitement long
        return x * x
    
    # Route utilisant la fonction mise en cache
    @app.get("/compute/{x}")
    def compute(x: int):
        result = expensive_computation(x)
        return JSONResponse(content={"input": x, "result": result})

    Explication du code :

    from fastapi import FastAPI importe FastAPI pour créer l’application web.

    from fastapi.responses import JSONResponse importe JSONResponse pour renvoyer des réponses JSON personnalisées.

    from functools import lru_cache importe lru_cache, un décorateur permettant de mettre en cache les résultats d’une fonction afin d’améliorer les performances pour les appels répétés.

    import time importe le module time pour simuler un délai dans le calcul, illustrant un traitement coûteux.

    Créer l’application FastAPI

    app = FastAPI() crée une instance de l’application FastAPI.

    Fonction simulant un calcul coûteux

    @lru_cache(maxsize=32) applique une mise en cache à la fonction expensive_computation. Le paramètre maxsize=32 indique que les 32 derniers résultats calculés seront mémorisés pour accélérer les appels futurs avec les mêmes entrées.

    def expensive_computation(x: int): définit une fonction qui prend un entier x en entrée.
    time.sleep(2) simule un calcul long de 2 secondes.
    return x * x retourne le carré de x.

    Route utilisant la fonction mise en cache

    @app.get("/compute/{x}") définit une route GET accessible avec un entier x dans l’URL.
    Exemple : /compute/5.

    result = expensive_computation(x) appelle la fonction mise en cache pour calculer ou récupérer le résultat.

    return JSONResponse(content={"input": x, "result": result}) renvoie le résultat dans un format JSON clair.