Partager via


Bibliothèque cliente Files d’attente de stockage Azure pour Python - version 12.9.0

Les files d’attente de stockage Azure sont un service permettant de stocker un grand nombre de messages accessibles depuis n’importe où dans le monde via des appels authentifiés avec HTTP ou HTTPS. Un message de file d’attente unique peut atteindre 64 Kio et une file d’attente peut contenir des millions de messages, jusqu’à la limite de capacité totale d’un compte de stockage.

Voici quelques utilisations courantes des files d’attente de stockage :

  • Création d'un journal des travaux en souffrance de travail à traiter de manière asynchrone
  • Passage de messages entre différentes parties d’une application distribuée

| Code sourcePackage (PyPI) | Package (Conda) | Documentation de référence sur les | API | Documentation produitÉchantillons

Prise en main

Prérequis

Installer le package

Installez la bibliothèque cliente Files d’attente de stockage Azure pour Python avec pip :

pip install azure-storage-queue

Créez un compte de stockage.

Si vous souhaitez créer un compte de stockage, vous pouvez utiliser le portail Azure, Azure PowerShell ou Azure CLI :

# Create a new resource group to hold the storage account -
# if using an existing resource group, skip this step
az group create --name my-resource-group --location westus2

# Create the storage account
az storage account create -n my-storage-account-name -g my-resource-group

Création du client

La bibliothèque cliente Files d’attente de stockage Azure pour Python vous permet d’interagir avec trois types de ressources : le compte de stockage lui-même, les files d’attente et les messages. L’interaction avec ces ressources commence par une instance d’un client. Pour créer un objet client, vous aurez besoin de l’URL du point de terminaison de service de file d’attente du compte de stockage et d’informations d’identification qui vous permettent d’accéder au compte de stockage :

from azure.storage.queue import QueueServiceClient

service = QueueServiceClient(account_url="https://<my-storage-account-name>.queue.core.windows.net/", credential=credential)

Recherche de l’URL du compte

Vous trouverez l’URL du service de file d’attente du compte de stockage à l’aide du portail Azure, de Azure PowerShell ou d’Azure CLI :

# Get the queue service URL for the storage account
az storage account show -n my-storage-account-name -g my-resource-group --query "primaryEndpoints.queue"

Types d’informations d’identification

Le credential paramètre peut être fourni sous plusieurs formes différentes, selon le type d’autorisation que vous souhaitez utiliser :

  1. Pour utiliser un jeton de signature d’accès partagé (SAP), fournissez le jeton sous forme de chaîne. Si l’URL de votre compte inclut le jeton SAS, omettez le paramètre des informations d’identification. Vous pouvez générer un jeton SAP à partir du portail Azure sous « Signature d’accès partagé » ou utiliser l’une generate_sas() des fonctions pour créer un jeton SAP pour le compte de stockage ou la file d’attente :

    from datetime import datetime, timedelta
    from azure.storage.queue import QueueServiceClient, generate_account_sas, ResourceTypes, AccountSasPermissions
    
    sas_token = generate_account_sas(
        account_name="<storage-account-name>",
        account_key="<account-access-key>",
        resource_types=ResourceTypes(service=True),
        permission=AccountSasPermissions(read=True),
        start=datetime.utcnow(),
        expiry=datetime.utcnow() + timedelta(hours=1)
    )
    
    queue_service_client = QueueServiceClient(account_url="https://<my_account_name>.queue.core.windows.net", credential=sas_token)
    
  2. Pour utiliser une clé partagée de compte de stockage (également appelée clé de compte ou clé d’accès), fournissez la clé sous forme de chaîne. Vous pouvez le trouver dans le portail Azure sous la section « Clés d’accès » ou en exécutant la commande Azure CLI suivante :

    az storage account keys list -g MyResourceGroup -n MyStorageAccount

    Utilisez la clé comme paramètre d’informations d’identification pour authentifier le client :

    from azure.storage.queue import QueueServiceClient
    service = QueueServiceClient(account_url="https://<my_account_name>.queue.core.windows.net", credential="<account_access_key>")
    
  3. Pour utiliser des informations d’identification de jeton Azure Active Directory (AAD), fournissez une instance du type d’informations d’identification souhaité obtenu à partir de la bibliothèque d’identité Azure. Par exemple, DefaultAzureCredential peut être utilisé pour authentifier le client.

    Cela nécessite une configuration initiale :

    • Installer azure-identity
    • Inscrire une nouvelle application AAD et accorder des autorisations d’accès au Stockage Azure
    • Accorder l’accès aux données de file d’attente Azure avec RBAC dans le portail Azure
    • Définissez les valeurs de l’ID client, de l’ID de locataire et de la clé secrète client de l’application AAD en tant que variables d’environnement : AZURE_TENANT_ID, AZURE_CLIENT_ID, AZURE_CLIENT_SECRET

    Utilisez les informations d’identification de jeton retournées pour authentifier le client :

        from azure.identity import DefaultAzureCredential
        from azure.storage.queue import QueueServiceClient
        token_credential = DefaultAzureCredential()
    
        queue_service_client = QueueServiceClient(
            account_url="https://<my_account_name>.queue.core.windows.net",
            credential=token_credential
        )
    

Création du client à partir d’un chaîne de connexion

En fonction de votre cas d’usage et de votre méthode d’autorisation, vous préférerez peut-être initialiser un instance client avec un chaîne de connexion de stockage au lieu de fournir l’URL et les informations d’identification du compte séparément. Pour ce faire, transmettez le chaîne de connexion de stockage à la méthode de classe du from_connection_string client :

from azure.storage.queue import QueueServiceClient

connection_string = "DefaultEndpointsProtocol=https;AccountName=xxxx;AccountKey=xxxx;EndpointSuffix=core.windows.net"
service = QueueServiceClient.from_connection_string(conn_str=connection_string)

La chaîne de connexion à votre compte de stockage se trouve dans le Portail Azure sous la section « Clés d’accès » ou en exécutant la commande CLI suivante :

az storage account show-connection-string -g MyResourceGroup -n MyStorageAccount

Concepts clés

Les composants suivants composent le service de file d’attente Azure :

  • Le compte de stockage lui-même
  • File d’attente dans le compte de stockage, qui contient un ensemble de messages
  • Un message dans une file d’attente, dans n’importe quel format, de 64 Kio maximum

La bibliothèque cliente Files d’attente de stockage Azure pour Python vous permet d’interagir avec chacun de ces composants via l’utilisation d’un objet client dédié.

Clients asynchrones

Cette bibliothèque inclut une API asynchrone complète prise en charge sur Python 3.5+. Pour l’utiliser, vous devez d’abord installer un transport asynchrone, tel que aiohttp. Pour plus d’informations, consultez la documentation azure-core .

Les clients et les informations d’identification asynchrones doivent être fermés lorsqu’ils ne sont plus nécessaires. Ces objets sont des gestionnaires de contexte asynchrones et définissent des méthodes asynchrones close .

Clients

Deux clients différents sont fournis pour interagir avec les différents composants du service de file d’attente :

  1. QueueServiceClient : ce client représente l’interaction avec le compte de stockage Azure lui-même et vous permet d’acquérir des instances clientes préconfigurées pour accéder aux files d’attente dans. Il fournit des opérations pour récupérer et configurer les propriétés du compte, ainsi que répertorier, créer et supprimer des files d’attente dans le compte. Pour effectuer des opérations sur une file d’attente spécifique, récupérez un client à l’aide de la get_queue_client méthode .
  2. QueueClient : ce client représente l’interaction avec une file d’attente spécifique (qui n’a pas besoin d’exister encore). Il fournit des opérations pour créer, supprimer ou configurer une file d’attente et inclut des opérations d’envoi, de réception, d’aperçu, de suppression et de mise à jour de messages.

Messages

  • Envoyer : ajoute un message à la file d’attente et définit éventuellement un délai de visibilité pour le message.
  • Réception : récupère un message de la file d’attente et le rend invisible pour les autres consommateurs.
  • Aperçu : récupère un message à l’avant de la file d’attente, sans modifier la visibilité du message.
  • Mise à jour : Mises à jour le délai de visibilité d’un message et/ou son contenu.
  • Supprimer : supprime un message spécifié de la file d’attente.
  • Effacer : efface tous les messages de la file d’attente.

Exemples

Les sections suivantes fournissent plusieurs extraits de code couvrant certaines des tâches de file d’attente de stockage les plus courantes, notamment :

Création d’une file d’attente

Créer une file d’attente dans votre compte de stockage

from azure.storage.queue import QueueClient

queue = QueueClient.from_connection_string(conn_str="<connection_string>", queue_name="myqueue")
queue.create_queue()

Utiliser le client asynchrone pour créer une file d’attente

from azure.storage.queue.aio import QueueClient

queue = QueueClient.from_connection_string(conn_str="<connection_string>", queue_name="myqueue")
await queue.create_queue()

Envoi de messages

Envoyer des messages à votre file d’attente

from azure.storage.queue import QueueClient

queue = QueueClient.from_connection_string(conn_str="<connection_string>", queue_name="myqueue")
queue.send_message("I'm using queues!")
queue.send_message("This is my second message")

Envoyer des messages de manière asynchrone

import asyncio
from azure.storage.queue.aio import QueueClient

queue = QueueClient.from_connection_string(conn_str="<connection_string>", queue_name="myqueue")
await asyncio.gather(
    queue.send_message("I'm using queues!"),
    queue.send_message("This is my second message")
)

Réception de messages

Recevoir et traiter des messages à partir de votre file d’attente

from azure.storage.queue import QueueClient

queue = QueueClient.from_connection_string(conn_str="<connection_string>", queue_name="myqueue")
response = queue.receive_messages()

for message in response:
    print(message.content)
    queue.delete_message(message)

# Printed messages from the front of the queue:
# >> I'm using queues!
# >> This is my second message

Recevoir et traiter des messages par lots

from azure.storage.queue import QueueClient

queue = QueueClient.from_connection_string(conn_str="<connection_string>", queue_name="myqueue")
response = queue.receive_messages(messages_per_page=10)

for message_batch in response.by_page():
    for message in message_batch:
        print(message.content)
        queue.delete_message(message)

Recevoir et traiter des messages de manière asynchrone

from azure.storage.queue.aio import QueueClient

queue = QueueClient.from_connection_string(conn_str="<connection_string>", queue_name="myqueue")
response = queue.receive_messages()

async for message in response:
    print(message.content)
    await queue.delete_message(message)

Configuration facultative

Facultatif mot clé arguments qui peuvent être transmis au niveau du client et par opération.

Configuration de la stratégie de nouvelle tentative

Utilisez les arguments mot clé suivants lors de l’instanciation d’un client pour configurer la stratégie de nouvelle tentative :

  • retry_total (int) : nombre total de nouvelles tentatives à autoriser. Est prioritaire sur d’autres nombres. Transmettez retry_total=0 si vous ne souhaitez pas réessayer sur les demandes. La valeur par défaut est 10.
  • retry_connect (int) : nombre d’erreurs liées à la connexion à retenter. La valeur par défaut est 3.
  • retry_read (int) : nombre de nouvelles tentatives en cas d’erreurs de lecture. La valeur par défaut est 3.
  • retry_status (int) : nombre de nouvelles tentatives sur des codes de status incorrects. La valeur par défaut est 3.
  • retry_to_secondary (bool) : indique si la demande doit être retentée au niveau secondaire, si possible. Cela ne doit être activé que si les comptes RA-GRS sont utilisés et que les données potentiellement obsolètes peuvent être gérées. La valeur par défaut est False.

Autre configuration client/ par opération

D’autres configurations facultatives mot clé arguments qui peuvent être spécifiés sur le client ou par opération.

Arguments de mot clé client :

  • connection_timeout (int) : nombre de secondes pendant lesquelles le client attend pour établir une connexion au serveur. La valeur par défaut est de 20 secondes.
  • read_timeout (int) : nombre de secondes pendant lesquelles le client attend une réponse du serveur entre les opérations de lecture consécutives. Il s’agit d’un délai d’attente au niveau du socket qui n’est pas affecté par la taille globale des données. Les délais de lecture côté client sont automatiquement retentés. La valeur par défaut est de 60 secondes.
  • transport (Any) : transport fourni par l’utilisateur pour envoyer la requête HTTP.

Arguments de mot clé par opération :

  • raw_response_hook (appelable) : le rappel donné utilise la réponse retournée par le service.
  • raw_request_hook (appelable) : le rappel donné utilise la requête avant d’être envoyé au service.
  • client_request_id (str) : identification facultative spécifiée par l’utilisateur de la demande.
  • user_agent (str) : ajoute la valeur personnalisée à l’en-tête user-agent à envoyer avec la demande.
  • logging_enable (bool) : active la journalisation au niveau DEBUG. Valeur par défaut False. Peut également être transmis au niveau du client pour l’activer pour toutes les demandes.
  • logging_body (bool) : active la journalisation du corps de la requête et de la réponse. Valeur par défaut False. Peut également être transmis au niveau du client pour l’activer pour toutes les demandes.
  • en-têtes (dict) : passez des en-têtes personnalisés en tant que paires de clés et de valeurs. Par exemple, headers={'CustomValue': value}

Dépannage

Général

Les clients file d’attente de stockage déclenchent des exceptions définies dans Azure Core.

Cette liste peut être utilisée à des fins de référence pour intercepter les exceptions levées. Pour obtenir le code d’erreur spécifique de l’exception, utilisez l’attribut error_code , exception.error_codec’est-à-dire .

Journalisation

Cette bibliothèque utilise la bibliothèque de journalisation standard pour la journalisation. Les informations de base sur les sessions HTTP (URL, en-têtes, etc.) sont enregistrées au niveau INFO.

La journalisation détaillée au niveau DEBUG, y compris les corps de requête/réponse et les en-têtes non expurgés, peut être activée sur un client avec l’argument logging_enable :

import sys
import logging
from azure.storage.queue import QueueServiceClient

# Create a logger for the 'azure.storage.queue' SDK
logger = logging.getLogger('azure.storage.queue')
logger.setLevel(logging.DEBUG)

# Configure a console output
handler = logging.StreamHandler(stream=sys.stdout)
logger.addHandler(handler)

# This client will log detailed information about its HTTP sessions, at DEBUG level
service_client = QueueServiceClient.from_connection_string("your_connection_string", logging_enable=True)

De la même façon, logging_enable peut activer la journalisation détaillée pour une seule opération, même quand elle n’est pas activée pour le client :

service_client.get_service_stats(logging_enable=True)

Étapes suivantes

Autres exemples de code

Prise en main de nos exemples de file d’attente.

Plusieurs exemples de sdk Python de files d’attente de stockage sont disponibles dans le référentiel GitHub du SDK. Ces exemples fournissent un exemple de code pour des scénarios supplémentaires couramment rencontrés lors de l’utilisation des files d’attente de stockage :

  • queue_samples_hello_world.py (version asynchrone) - Exemples trouvés dans cet article :

    • Création de client
    • Créer une file d’attente
    • Envoyer des messages
    • Recevoir des messages
  • queue_samples_authentication.py (version asynchrone) : exemples d’authentification et de création du client :

    • À partir d’un chaîne de connexion
    • À partir d’une clé d’accès partagé
    • À partir d’un jeton de signature d’accès partagé
    • À partir d’Azure Active Directory
  • queue_samples_service.py (version asynchrone) : exemples d’interaction avec le service de file d’attente :

    • Obtenir et définir des propriétés de service
    • Répertorier les files d’attente dans un compte de stockage
    • Créer et supprimer une file d’attente du service
    • Obtenir file d’attenteClient
  • queue_samples_message.py (version asynchrone) - Exemples d’utilisation des files d’attente et des messages :

    • Définir une stratégie d’accès
    • Obtenir et définir des métadonnées de file d’attente
    • Envoyer et recevoir des messages
    • Supprimer les messages spécifiés et effacer tous les messages
    • Aperçu et mettre à jour les messages

Documentation complémentaire

Pour obtenir une documentation plus complète sur le stockage File d’attente Azure, consultez la documentation stockage File d’attente Azure sur docs.microsoft.com.

Contribution

Ce projet accepte les contributions et les suggestions. La plupart des contributions vous demandent d’accepter un contrat de licence de contribution (CLA) déclarant que vous avez le droit de nous accorder, et que vous nous accordez réellement, les droits d’utilisation de votre contribution. Pour plus d’informations, visitez https://cla.microsoft.com.

Quand vous envoyez une demande de tirage (pull request), un bot CLA détermine automatiquement si vous devez fournir un contrat CLA et agrémenter la demande de tirage de façon appropriée (par exemple, avec une étiquette ou un commentaire). Suivez simplement les instructions fournies par le bot. Vous ne devez effectuer cette opération qu’une seule fois sur tous les dépôts utilisant notre contrat CLA.

Ce projet a adopté le Code de conduite Open Source de Microsoft. Pour plus d’informations, consultez les Questions fréquentes (FAQ) sur le code de conduite ou envoyez vos questions ou vos commentaires à opencode@microsoft.com.