Maison développement back-end Tutoriel Python Comment utiliser la file d'attente de messages pour le traitement des tâches asynchrones dans FastAPI

Comment utiliser la file d'attente de messages pour le traitement des tâches asynchrones dans FastAPI

Jul 30, 2023 pm 09:21 PM
消息队列 fastapi 异步任务

Comment utiliser la file d'attente de messages pour le traitement des tâches asynchrones dans FastAPI

Introduction :
Dans les applications Web, il est souvent constaté que des tâches fastidieuses doivent être traitées, telles que l'envoi d'e-mails, la génération de rapports, etc. Si ces tâches sont placées dans un processus requête-réponse synchrone, les utilisateurs devront attendre longtemps, ce qui réduira l'expérience utilisateur et la vitesse de réponse du serveur. Afin de résoudre ce problème, nous pouvons utiliser la file d'attente de messages pour le traitement des tâches asynchrones. Cet article explique comment utiliser les files d'attente de messages dans le framework FastAPI pour traiter des tâches asynchrones et fournit des exemples de code correspondants.

1. Qu'est-ce qu'une file d'attente de messages ?
La file d'attente de messages est un mécanisme de communication asynchrone entre les composants de l'application. Il permet aux expéditeurs d'envoyer des messages vers une file d'attente et aux destinataires d'obtenir et de traiter ces messages à partir de la file d'attente. L'avantage de la file d'attente de messages est que l'expéditeur et le destinataire sont découplés. L'expéditeur n'a pas besoin d'attendre que le destinataire termine le traitement avant de continuer à effectuer d'autres tâches, améliorant ainsi les performances de débit et de concurrence du système.

2. Choisissez un service de file d'attente de messages approprié
Avant d'utiliser la file d'attente de messages, nous devons choisir un service de file d'attente de messages approprié. Actuellement, les services de file d'attente de messages les plus couramment utilisés incluent RabbitMQ, Kafka, ActiveMQ, etc. Ces services de file d'attente de messages offrent des fonctions riches et des garanties de fiabilité, et nous pouvons choisir le service approprié en fonction des besoins réels.

3. Utilisation de la file d'attente de messages dans FastAPI
Pour utiliser la file d'attente de messages dans FastAPI, nous devons d'abord installer la bibliothèque client de file d'attente de messages correspondante. En prenant RabbitMQ comme exemple, vous pouvez l'installer via la commande pip install aio-pika. Une fois l'installation terminée, nous pouvons introduire les dépendances et modules correspondants dans le fichier principal de FastAPI. pip install aio-pika进行安装。安装完成后,我们可以在FastAPI的主文件中引入相应的依赖项和模块。

from fastapi import FastAPI
from fastapi import BackgroundTasks
from aio_pika import connect, IncomingMessage
Copier après la connexion

接下来,我们需要配置消息队列的连接信息,并编写处理消息的函数。

AMQP_URL = "amqp://guest:guest@localhost/"
QUEUE_NAME = "task_queue"

async def process_message(message: IncomingMessage):
    # 在这里编写异步任务的处理逻辑
    # 例如发送邮件、生成报表等
    print(f"Received message: {message.body}")
    # 这里可以根据实际情况进行任务处理
    # ...

    message.ack()
Copier après la connexion

然后,我们需要在FastAPI应用程序中定义一个接口,用来接收需要进行异步处理的任务。

app = FastAPI()

@app.post("/task")
async def handle_task(request: dict, background_tasks: BackgroundTasks):
    connection = await connect(AMQP_URL)
    channel = await connection.channel()
    queue = await channel.declare_queue(QUEUE_NAME)

    # 发送任务给消息队列
    await queue.publish(
        body=str(request).encode(),
        routing_key=QUEUE_NAME
    )

    connection.close()

    return {"message": "Task submitted successfully"}
Copier après la connexion

上述代码定义了一个POST接口/task

async def listen_to_queue():
    connection = await connect(AMQP_URL)
    channel = await connection.channel()
    queue = await channel.declare_queue(QUEUE_NAME)

    # 持续监听消息队列
    async with queue.iterator() as queue_iterator:
        async for message in queue_iterator:
            async with message.process():
                await process_message(message)
Copier après la connexion

Ensuite, nous devons configurer les informations de connexion de la file d'attente des messages et écrire une fonction pour traiter le message.

app = FastAPI()

@app.on_event("startup")
async def startup_event():
    # 启动消息队列监听
    await listen_to_queue()
Copier après la connexion
Ensuite, nous devons définir une interface dans l'application FastAPI pour recevoir les tâches qui nécessitent un traitement asynchrone.

rrreee

Le code ci-dessus définit une interface POST /task Lorsqu'une demande est reçue, la tâche est transmise à la file d'attente des messages pour un traitement asynchrone et un message réussi est renvoyé une fois le traitement terminé.

Enfin, nous devons écrire une fonction asynchrone pour écouter la file d'attente des messages et gérer les tâches asynchrones.

rrreee
A l'entrée de l'application FastAPI, nous devons démarrer une fonction asynchrone pour écouter la file d'attente des messages.

rrreee

À ce stade, nous avons terminé la configuration et le codage de l'utilisation des files d'attente de messages pour le traitement des tâches asynchrones dans FastAPI.

Conclusion :

En utilisant les files d'attente de messages, nous pouvons séparer les tâches fastidieuses du processus de synchronisation et améliorer les performances des applications et la vitesse de réponse. Cet article décrit comment configurer et utiliser les files d'attente de messages dans FastAPI et fournit des exemples de code correspondants. J'espère que cela vous sera utile lors du développement du traitement des tâches asynchrones.

Références : 🎜[1] https://fastapi.tiangolo.com/🎜[2] https://docs.aio-pika.readthedocs.io/🎜🎜(Remarque : les exemples de code ci-dessus sont à titre de référence uniquement, réel Il doit être ajusté en fonction de la situation spécifique)🎜.

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 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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Pratique de développement Java Websocket : comment implémenter la fonction de file d'attente de messages Pratique de développement Java Websocket : comment implémenter la fonction de file d'attente de messages Dec 02, 2023 pm 01:57 PM

Pratique de développement Java Websocket : Comment implémenter la fonction de file d'attente de messages Introduction : Avec le développement rapide d'Internet, la communication en temps réel devient de plus en plus importante. Dans de nombreuses applications Web, des mises à jour et des capacités de notification en temps réel sont requises via la messagerie en temps réel. JavaWebsocket est une technologie qui permet la communication en temps réel dans les applications Web. Cet article explique comment utiliser JavaWebsocket pour implémenter la fonction de file d'attente de messages et fournit des exemples de code spécifiques. Concepts de base de la file d'attente de messages

Créez des applications Web internationales à l'aide du framework FastAPI Créez des applications Web internationales à l'aide du framework FastAPI Sep 29, 2023 pm 03:53 PM

Utilisez le framework FastAPI pour créer des applications Web internationales FastAPI est un framework Web Python hautes performances qui combine des annotations de type Python et une prise en charge asynchrone hautes performances pour rendre le développement d'applications Web plus simple, plus rapide et plus fiable. Lors de la création d'une application Web internationale, FastAPI fournit des outils et des concepts pratiques qui permettent à l'application de prendre facilement en charge plusieurs langues. Ci-dessous, je vais donner un exemple de code spécifique pour présenter comment utiliser le framework FastAPI pour construire

Flask vs FastAPI : le meilleur choix pour un développement efficace d'API Web Flask vs FastAPI : le meilleur choix pour un développement efficace d'API Web Sep 27, 2023 pm 09:01 PM

FlaskvsFastAPI : Le meilleur choix pour un développement efficace de WebAPI Introduction : Dans le développement de logiciels modernes, WebAPI est devenu un élément indispensable. Ils fournissent des données et des services qui permettent la communication et l'interopérabilité entre différentes applications. Lors du choix d'un framework pour développer WebAPI, Flask et FastAPI sont deux choix qui ont beaucoup retenu l'attention. Les deux frameworks sont très populaires et chacun présente ses propres avantages. Dans cet article, nous examinerons Fl

Suggestions de développement : Comment utiliser le framework ThinkPHP pour implémenter des tâches asynchrones Suggestions de développement : Comment utiliser le framework ThinkPHP pour implémenter des tâches asynchrones Nov 22, 2023 pm 12:01 PM

"Suggestions de développement : comment utiliser le framework ThinkPHP pour implémenter des tâches asynchrones" Avec le développement rapide de la technologie Internet, les applications Web ont des exigences de plus en plus élevées pour gérer un grand nombre de requêtes simultanées et une logique métier complexe. Afin d'améliorer les performances du système et l'expérience utilisateur, les développeurs envisagent souvent d'utiliser des tâches asynchrones pour effectuer certaines opérations chronophages, telles que l'envoi d'e-mails, le traitement des téléchargements de fichiers, la génération de rapports, etc. Dans le domaine de PHP, le framework ThinkPHP, en tant que framework de développement populaire, offre des moyens pratiques d'implémenter des tâches asynchrones.

Django, Flask et FastAPI : quel framework convient aux débutants ? Django, Flask et FastAPI : quel framework convient aux débutants ? Sep 27, 2023 pm 09:06 PM

Django, Flask et FastAPI : quel framework convient aux débutants ? Introduction : Dans le domaine du développement d'applications Web, il existe de nombreux excellents frameworks Python parmi lesquels choisir. Cet article se concentrera sur les trois frameworks les plus populaires, Django, Flask et FastAPI. Nous évaluerons leurs fonctionnalités et discuterons du framework le mieux adapté aux débutants. Parallèlement, nous fournirons également quelques exemples de code spécifiques pour aider les débutants à mieux comprendre ces frameworks. 1. Django : Django

Développement Golang : créez une file d'attente de messages fiable à l'aide de NATS Développement Golang : créez une file d'attente de messages fiable à l'aide de NATS Sep 21, 2023 am 11:21 AM

Développement Golang : Utilisation de NATS pour créer une file d'attente de messages fiable, des exemples de code spécifiques sont nécessaires Introduction : Dans les systèmes distribués modernes, la file d'attente de messages est un composant important utilisé pour gérer la communication asynchrone, découpler les composants du système et assurer une livraison fiable des messages. Cet article explique comment utiliser le langage de programmation Golang et NATS (le nom complet est « High Performance Reliable Messaging System ») pour créer une file d'attente de messages efficace et fiable, et fournit des exemples de code spécifiques. Qu’est-ce que le NATS ? NATS est un système de messagerie léger et open source.

Django, Flask et FastAPI : choisissez celui qui correspond le mieux à vos besoins de développement Django, Flask et FastAPI : choisissez celui qui correspond le mieux à vos besoins de développement Sep 29, 2023 am 10:49 AM

Django, Flask et FastAPI : choisissez celui qui correspond le mieux à vos besoins de développement, exemples de code spécifiques requis Introduction : Dans le développement Web moderne, le choix du bon framework est crucial. Alors que Python continue de se développer dans le domaine du développement Web, des frameworks tels que Django, Flask et FastAPI deviennent de plus en plus populaires parmi les développeurs. Cet article présentera les caractéristiques et les scénarios applicables de ces trois frameworks, combinés à des exemples de code spécifiques, pour vous aider à choisir le framework le mieux adapté à vos besoins de développement. 1.D

Comment gérer les transactions distribuées et les files d'attente de messages dans le développement C# Comment gérer les transactions distribuées et les files d'attente de messages dans le développement C# Oct 09, 2023 am 11:36 AM

Comment gérer les transactions distribuées et les files d'attente de messages dans le développement C# Introduction : Dans les systèmes distribués d'aujourd'hui, les transactions et les files d'attente de messages sont des composants très importants. Les transactions distribuées et les files d'attente de messages jouent un rôle crucial dans la gestion de la cohérence des données et du découplage du système. Cet article explique comment gérer les transactions distribuées et les files d'attente de messages dans le développement C#, et donne des exemples de code spécifiques. 1. Transactions distribuées Les transactions distribuées font référence à des transactions qui s'étendent sur plusieurs bases de données ou services. Dans les systèmes distribués, assurer la cohérence des données est devenu un défi majeur. Voici deux types de

See all articles