Exemples de code Stockage File d’attente Azure utilisant des bibliothèques de client Python version 2
Cet article présente des exemples de code qui utilisent la version 2 de la bibliothèque de client Stockage File d’attente Azure pour Python.
Le 31 mars 2023, nous avons mis fin à la prise en charge des bibliothèques de Kit de développement logiciel (SDK) Azure qui ne respectent pas les instructions actuelles concernant le SDK Azure. Les nouvelles bibliothèques du Kit de développement logiciel (SDK) Azure sont régulièrement mises à jour pour offrir des expériences cohérentes et renforcer votre posture de sécurité. Nous vous recommandons une transition vers les nouvelles bibliothèques du Kit de développement logiciel Azure pour profiter des nouvelles fonctionnalités et des correctifs de sécurité.
Bien que les anciennes bibliothèques puissent toujours être utilisées au-delà du 31 mars 2023, elles ne seront plus prises en charge officiellement et mises à jour par Microsoft. Pour plus d’informations, consultez l’annonce concernant l’arrêt de la prise en charge.
Pour obtenir des exemples de code utilisant la dernière version de la bibliothèque de client 12.x, consultez Démarrage rapide : bibliothèque cliente Stockage File d’attente Azure pour Python.
Créer une file d’attente
Ajoutez les directives import
suivantes :
from azure.storage.queue import (
QueueService,
QueueMessageFormat
)
Le code suivant crée un objet QueueService
à l'aide de la chaîne de connexion de stockage.
# Retrieve the connection string from an environment
# variable named AZURE_STORAGE_CONNECTION_STRING
connect_str = os.getenv("AZURE_STORAGE_CONNECTION_STRING")
# Create a unique name for the queue
queue_name = "queue-" + str(uuid.uuid4())
# Create a QueueService object which will
# be used to create and manipulate the queue
print("Creating queue: " + queue_name)
queue_service = QueueService(connection_string=connect_str)
# Create the queue
queue_service.create_queue(queue_name)
Les messages de la file d’attente Azure sont stockés sous forme de texte. Si vous souhaitez stocker des données binaires, configurez les fonctions d'encodage et de décodage Base64 avant de placer un message dans la file d'attente.
Configurez les fonctions de codage et de décodage base64 sur un objet Stockage File d'attente :
# Setup Base64 encoding and decoding functions
queue_service.encode_function = QueueMessageFormat.binary_base64encode
queue_service.decode_function = QueueMessageFormat.binary_base64decode
Insertion d'un message dans une file d'attente
Pour insérer un message dans une file d’attente, utilisez la méthode put_message
afin de créer un message et l’ajouter à la file d’attente.
message = u"Hello, World"
print("Adding message: " + message)
queue_service.put_message(queue_name, message)
Afficher un aperçu des messages
Vous pouvez lire les messages sans les supprimer de la file d’attente en appelant la méthode peek_messages
. Par défaut, cette méthode lit un seul message.
messages = queue_service.peek_messages(queue_name)
for peeked_message in messages:
print("Peeked message: " + peeked_message.content)
Modification du contenu d'un message en file d'attente
Le code suivant utilise la méthode update_message
pour mettre à jour un message. Ce délai de visibilité est défini sur 0, ce qui signifie que le message s’affiche immédiatement et que le contenu est mis à jour.
messages = queue_service.get_messages(queue_name)
for message in messages:
queue_service.update_message(
queue_name, message.id, message.pop_receipt, 0, u"Hello, World Again")
Obtention de la longueur de la file d'attente
La méthode get_queue_metadata
retourne les propriétés de file d’attente, y compris approximate_message_count
.
metadata = queue_service.get_queue_metadata(queue_name)
count = metadata.approximate_message_count
print("Message count: " + str(count))
Le résultat est seulement approximatif, car des messages peuvent être ajoutés ou supprimés après que le service a répondu à votre demande.
Enlever des messages d’une file d’attente
Lorsque vous appelez get_messages, vous obtenez par défaut le message suivant de la file d'attente. Un message renvoyé par get_messages
devient invisible par les autres codes lisant les messages de cette file d'attente. Par défaut, ce message reste invisible pendant 30 secondes. Pour finaliser la suppression du message de la file d’attente, vous devez aussi appeler delete_message.
messages = queue_service.get_messages(queue_name)
for message in messages:
print("Deleting message: " + message.content)
queue_service.delete_message(queue_name, message.id, message.pop_receipt)
Il existe deux façons de personnaliser la récupération des messages à partir d'une file d'attente. Premièrement, vous pouvez obtenir un lot de messages (jusqu'à 32). Deuxièmement, vous pouvez définir un délai d'expiration de l'invisibilité plus long ou plus court afin d'accorder à votre code plus ou moins de temps pour traiter complètement chaque message.
L’exemple de code suivant utilise la méthode get_messages
pour obtenir 16 messages en un appel. Ensuite, il traite chaque message à l'aide d'une boucle for
. Il définit également le délai d'expiration de l'invisibilité sur cinq minutes pour chaque message.
messages = queue_service.get_messages(queue_name, num_messages=16, visibility_timeout=5*60)
for message in messages:
print("Deleting message: " + message.content)
queue_service.delete_message(queue_name, message.id, message.pop_receipt)
Suppression d'une file d'attente
Pour supprimer une file d’attente et tous les messages qu’elle contient, appelez la méthode delete_queue
.
print("Deleting queue: " + queue_name)
queue_service.delete_queue(queue_name)