Maison  >  Article  >  développement back-end  >  Comment implémenter la gestion et la réponse asynchrones des requêtes dans FastAPI

Comment implémenter la gestion et la réponse asynchrones des requêtes dans FastAPI

PHPz
PHPzoriginal
2023-08-01 22:43:573032parcourir

Comment implémenter le traitement et la réponse asynchrones des requêtes dans FastAPI

Introduction :
FastAPI est un framework Web moderne basé sur Python qui offre des performances puissantes et une facilité d'utilisation pour créer facilement des applications Web hautes performances. La gestion et la réponse asynchrones des requêtes sont une fonctionnalité puissante de FastAPI qui permet à nos applications de bien fonctionner face à une concurrence élevée et à des opérations gourmandes en E/S. Cet article explique comment implémenter le traitement et la réponse asynchrones des requêtes dans FastAPI et fournit quelques exemples de code.

1. Comprendre les principes du traitement asynchrone
Dans le développement Web traditionnel, chaque requête et réponse sont synchrones, c'est-à-dire que chaque requête bloque le thread du serveur et la réponse n'est renvoyée qu'une fois le traitement terminé. Le traitement asynchrone est une méthode non bloquante qui peut gérer plusieurs requêtes en même temps et libérer des threads du serveur pendant le traitement des requêtes pour améliorer les performances de concurrence du serveur. En Python, nous pouvons utiliser la bibliothèque asyncio pour implémenter un traitement asynchrone.

2. Prise en charge asynchrone dans FastAPI
FastAPI prend intrinsèquement en charge le traitement asynchrone. Il implémente les requêtes et les réponses asynchrones basées sur les bibliothèques Starlette et pydantic. Dans FastAPI, nous pouvons utiliser les mots-clés async et wait pour définir des fonctions asynchrones et marquer la fonction comme fonction asynchrone en déclarant async def. En parallèle, nous pouvons également utiliser certaines méthodes fournies par la bibliothèque asyncio pour écrire du code asynchrone.

3. Exemple de démarrage rapide
Implémentons un exemple simple de traitement et de réponse de requête asynchrone.

Première étape, installez FastAPI et la bibliothèque uvicorn :

pip install fastapi uvicorn[standard]

Deuxième étape, créez un fichier main.py et ajoutez le code suivant :

from fastapi import FastAPI, BackgroundTasks

app = FastAPI()

async def process_data(data):
    # 模拟耗时操作
    await asyncio.sleep(2)
    return {"result": data}

@app.post("/")
async def process_request(data: str, background_tasks: BackgroundTasks):
    background_tasks.add_task(process_data, data)
    return {"message": "Request accepted"}

if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app, host="0.0.0.0", port=8000)

Troisième étape, exécutez l'application :

python main.py

Dans le code ci-dessus, nous an asynchrone la fonction process_data est définie, qui simule une opération fastidieuse et renvoie le résultat du traitement. Dans la fonction principale, nous définissons une fonction de traitement de requête asynchrone process_request via le décorateur app.post, qui accepte un paramètre de données et convertit process_dataAsynchrone les fonctions sont traitées dans des tâches en arrière-plan. process_data,模拟了一个耗时操作,并返回处理结果。在主函数中,我们通过app.post装饰器定义了一个异步请求处理函数process_request,它接受一个data参数,并将process_data异步函数放入后台任务中处理。

第四步,测试应用程序:
我们可以使用curl工具或者浏览器来发送一个POST请求,请求数据为{"data": "Hello World"}

Étape 4, testez l'application :

Nous pouvons utiliser l'outil curl ou le navigateur pour envoyer une requête POST, et les données de la requête sont {"data": "Hello World">. Dans la réponse renvoyée, nous recevrons un message indiquant que la demande a été acceptée.

4. Résumé

Grâce à l'introduction de cet article, nous avons découvert la méthode de mise en œuvre du traitement et de la réponse asynchrones des requêtes dans FastAPI. Le traitement asynchrone peut considérablement améliorer les performances de concurrence du serveur et est particulièrement adapté au traitement d'un grand nombre d'opérations gourmandes en E/S. Dans les applications réelles, nous pouvons choisir des modèles et des bibliothèques asynchrones appropriés pour optimiser nos applications en fonction de besoins spécifiques.

    Références :
  1. Documentation officielle de FastAPI : https://fastapi.tiangolo.com/
  2. Documentation officielle d'asyncio : https://docs.python.org/3/library/asyncio.html
Opérations chronophages Exemple : https://docs.python.org/3/library/asyncio-task.html#sleeping🎜🎜

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!

Déclaration:
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