Azure Queue Storage-Codebeispiele mit Python-Clientbibliotheken der Version 2

Dieser Artikel zeigt Codebeispiele, welche die Version 2 der Azure Queue Storage-Clientbibliothek für Python verwenden.

Am 31. März 2023 haben wir die Unterstützung für Azure SDK-Bibliotheken eingestellt, die nicht den aktuellen Azure SDK-Richtlinien entsprachen. Die neuen Azure SDK-Bibliotheken werden regelmäßig aktualisiert, um konsistente Erfahrungen zu ermöglichen und Ihren Sicherheitsstatus zu stärken. Es wird empfohlen, auf die neuen Azure SDK-Bibliotheken umzusteigen, um die neuen Funktionen und wichtigen Sicherheitsupdates zu nutzen.

Obwohl die älteren Bibliotheken noch über den 31. März 2023 hinaus verwendet werden können, erhalten sie keinen offiziellen Support und keine Updates mehr von Microsoft. Weitere Informationen finden Sie in der Ankündigung der Supporteinstellung.

Codebeispiele mit der neuesten Version 12.x der Clientbibliothek finden Sie unter Schnellstart: Azure Queue Storage-Clientbibliothek für Python.

Erstellen einer Warteschlange

Fügen Sie die folgenden import-Anweisungen hinzu:

from azure.storage.queue import (
        QueueService,
        QueueMessageFormat
)

Der folgende Code erstellt mithilfe der Verbindungszeichenfolge für den Speicher ein QueueService-Objekt.

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

Azure-Warteschlangennachrichten werden als Text gespeichert. Wenn Sie Binärdaten speichern möchten, richten Sie die Funktionen für die Base64-Codierung und -Decodierung ein, bevor Sie eine Nachricht in die Warteschlange stellen.

Konfigurieren Sie die Funktionen für die Base64-Codierung und -Decodierung im Queue Storage-Objekt:

# Setup Base64 encoding and decoding functions
queue_service.encode_function = QueueMessageFormat.binary_base64encode
queue_service.decode_function = QueueMessageFormat.binary_base64decode

Einfügen einer Nachricht in eine Warteschlange

Zum Einfügen einer Nachricht in eine Warteschlange verwenden Sie die put_message-Methode, um eine neue Nachricht zu erstellen und zur Warteschlange hinzuzufügen.

message = u"Hello, World"
print("Adding message: " + message)
queue_service.put_message(queue_name, message)

Einsehen von Nachrichten

Sie können Nachrichten einsehen, ohne sie aus der Warteschlange zu entfernen. Rufen Sie dazu die Methode peek_messages auf. Standardmäßig wird von dieser Methode jeweils nur eine Nachricht angeschaut.

messages = queue_service.peek_messages(queue_name)

for peeked_message in messages:
    print("Peeked message: " + peeked_message.content)

Ändern des Inhalts von Nachrichten in der Warteschlange

Im folgenden Codebeispiel wird die Methode update_message verwendet, um eine Nachricht zu aktualisieren. Das Sichtbarkeitstimeout ist auf 0 festgelegt, d. h., die Nachricht wird sofort angezeigt, und der Inhalt wird aktualisiert.

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

Abrufen der Warteschlangenlänge

Die Methode get_queue_metadata gibt Warteschlangeneigenschaften zurück, einschließlich approximate_message_count.

metadata = queue_service.get_queue_metadata(queue_name)
count = metadata.approximate_message_count
print("Message count: " + str(count))

Die Anzahl ist nur ein ungefährer Wert, da seit der Antwort des Diensts auf Ihre Anforderung möglicherweise bereits Nachrichten hinzugefügt oder gelöscht wurden.

Entfernen von Nachrichten aus Warteschlangen

Wenn Sie get_messages aufrufen, wird standardmäßig die nächste Nachricht in der Warteschlange abgerufen. Die für get_messages zurückgegebene Nachricht ist für anderen Code, mit dem Nachrichten aus dieser Warteschlange gelesen werden, nicht mehr sichtbar. Standardmäßig bleibt die Nachricht 30 Sekunden lang unsichtbar. Um die Nachricht endgültig aus der Warteschlange zu entfernen, müssen Sie außerdem delete_message aufrufen.

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)

Es gibt zwei Möglichkeiten, wie Sie das Abrufen von Nachrichten aus der Warteschlange anpassen können. Erstens können Sie einen Nachrichtenstapel abrufen (bis zu 32). Zweitens können Sie das Unsichtbarkeits-Zeitlimit verkürzen oder verlängern, sodass der Code mehr oder weniger Zeit zur vollständigen Verarbeitung jeder Nachricht benötigt.

Im folgenden Codebeispiel wird get_messages verwendet, um 16 Nachrichten mit einem Aufruf abzurufen. Anschließend wird jede Nachricht mithilfe einer for-Schleife verarbeitet. Außerdem wird das Unsichtbarkeits-Zeitlimit auf fünf Minuten pro Nachricht festgelegt.

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)

Löschen einer Warteschlange

Zum Löschen einer Warteschlange und aller darin enthaltenen Nachrichten rufen Sie die Methode delete_queue auf.

print("Deleting queue: " + queue_name)
queue_service.delete_queue(queue_name)