Comment optimiser le temps de réponse FastAPI pour les données JSON volumineuses ?

Susan Sarandon
Libérer: 2024-10-18 23:00:30
original
820 Les gens l'ont consulté

How to Optimize FastAPI Response Time for Large JSON Data?

Accélération de la réponse FastAPI pour les données JSON volumineuses

FastAPI est un framework performant pour la création d'API, mais il peut rencontrer des goulots d'étranglement lors du renvoi de quantités importantes de données JSON. Dans ce scénario, le coupable est souvent la conversion fastidieuse des données au format JSON.

Option 1 : Encodeur JSON personnalisé (mise à jour 2)

La solution la plus rapide consiste à contourner l'encodeur JSON par défaut de FastAPI et à utiliser un encodeur plus efficace comme orjson ou ujson. Considérez cet extrait de code :

<code class="python">@app.get("/orjson")
def get_data_orjson():
    df = pd.read_parquet('data.parquet')
    return Response(orjson.dumps(df.to_dict(orient='records')), media_type="application/json")</code>
Copier après la connexion

Option 2 : Direct Pandas JSON

Une approche encore plus efficace consiste à utiliser la conversion JSON intégrée de Pandas. Voici un exemple :

<code class="python">@app.get("/pandasJSON")
def get_data_pandasJSON():
    df = pd.read_parquet('data.parquet')
    return Response(df.to_json(orient="records"), media_type="application/json")</code>
Copier après la connexion

Option 3 : Chnk Streaming

Pour les ensembles de données exceptionnellement volumineux, envisagez le chunk streaming pour éviter les problèmes de mémoire. Pandas fournit des fonctions comme read_csv ou read_parquet avec un paramètre chunksize pour le traitement incrémentiel des données.

Option 4 : Dask DataFrame

Pour les données qui dépassent la mémoire disponible, la bibliothèque Dask DataFrame peut être utilisé pour traiter et convertir efficacement des données volumineuses en JSON. Dask permet le calcul parallèle et peut gérer des ensembles de données massifs qui peuvent entraîner des problèmes de performances dans les opérations Pandas régulières.

Comparaison des performances

L'exemple de code fourni vous permet de comparer les performances de différentes approches de première main. Exécutez l'application et accédez à chaque point de terminaison (/defaultFastAPIencoder, /orjson, /ujson, /pandasJSON) pour observer les temps de réponse.

Considérations supplémentaires

Large Affichage : Si les données JSON sont destinées à être affichées côté client, elles peuvent apparaître en retard. Cela est dû aux limitations de performances du navigateur dans la gestion de données volumineuses.

Téléchargement de données : Faciliter le téléchargement des données utilisateur est une solution plus efficace. Vous pouvez utiliser l'en-tête Content-Disposition dans la réponse pour indiquer que le fichier doit être téléchargé.

En résumé, l'optimisation du temps de réponse de FastAPI pour les données JSON volumineuses nécessite un examen attentif des méthodes et techniques de conversion de données qui privilégient l'efficacité et évolutivité.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!