Codevoorbeelden voor Azure Queue Storage met behulp van Python-clientbibliotheken van versie 2
Dit artikel bevat codevoorbeelden die gebruikmaken van versie 2 van de Azure Queue Storage-clientbibliotheek voor Python.
Op 31 maart 2023 hebben we de ondersteuning voor Azure SDK-bibliotheken buiten gebruik gesteld die niet voldoen aan de huidige Azure SDK-richtlijnen. De nieuwe Azure SDK-bibliotheken worden regelmatig bijgewerkt om consistente ervaringen te stimuleren en je beveiligingspostuur te versterken. Het is raadzaam om over te stappen op de nieuwe Azure SDK-bibliotheken om te profiteren van de nieuwe mogelijkheden en essentiële beveiligingsupdates.
Hoewel de oudere bibliotheken na 31 maart 2023 nog steeds kunnen worden gebruikt, ontvangen ze geen officiële ondersteuning en updates meer van Microsoft. Zie de aankondiging van de buitengebruikstelling van de ondersteuning voor meer informatie.
Zie quickstart: Azure Queue Storage-clientbibliotheek voor Python voor codevoorbeelden met behulp van de nieuwste versie 12.x-clientbibliotheek.
Een wachtrij maken
Voeg de volgende import
-instructies toe:
from azure.storage.queue import (
QueueService,
QueueMessageFormat
)
Met de volgende code wordt een QueueService
object gemaakt met behulp van de opslag-verbindingsreeks.
# 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-wachtrijberichten worden opgeslagen als tekst. Als u binaire gegevens wilt opslaan, stelt u Base64-coderings- en decoderingsfuncties in voordat u een bericht in de wachtrij plaatst.
Configureer base64-coderings- en decoderingsfuncties in queue Storage-object:
# Setup Base64 encoding and decoding functions
queue_service.encode_function = QueueMessageFormat.binary_base64encode
queue_service.decode_function = QueueMessageFormat.binary_base64decode
Een bericht in een wachtrij invoegen
Als u een bericht in een wachtrij wilt invoegen, gebruikt u de put_message
methode om een nieuw bericht te maken en toe te voegen aan de wachtrij.
message = u"Hello, World"
print("Adding message: " + message)
queue_service.put_message(queue_name, message)
Berichten bekijken
U kunt berichten bekijken zonder ze uit de wachtrij te verwijderen door de methode aan te peek_messages
roepen. Deze methode bekijkt standaard één bericht.
messages = queue_service.peek_messages(queue_name)
for peeked_message in messages:
print("Peeked message: " + peeked_message.content)
De inhoud van een bericht in de wachtrij wijzigen
De volgende code gebruikt de update_message
methode om een bericht bij te werken. De time-out voor zichtbaarheid is ingesteld op 0, wat betekent dat het bericht onmiddellijk wordt weergegeven en de inhoud wordt bijgewerkt.
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")
Lengte van de wachtrij ophalen
De get_queue_metadata
methode retourneert wachtrijeigenschappen, waaronder approximate_message_count
.
metadata = queue_service.get_queue_metadata(queue_name)
count = metadata.approximate_message_count
print("Message count: " + str(count))
Het resultaat is alleen bij benadering omdat berichten kunnen worden toegevoegd of verwijderd nadat de service op uw aanvraag heeft gereageerd.
Bericht uit een wachtrij verwijderen
Wanneer u get_messages belt, krijgt u standaard het volgende bericht in de wachtrij. Een bericht dat wordt geretourneerd, get_messages
wordt onzichtbaar voor alle andere code die berichten uit deze wachtrij leest. Standaard blijft het bericht onzichtbaar gedurende 30 seconden. Als u het bericht uit de wachtrij wilt verwijderen, moet u ook delete_message aanroepen.
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)
Er zijn twee manieren waarop u het ophalen van berichten uit een wachtrij kunt aanpassen. Ten eerste kunt u berichten batchgewijs (maximaal 32) ophalen. Ten tweede kunt u een langere of kortere time-out voor onzichtbaarheid instellen, zodat uw code meer of minder tijd krijgt voor het volledig verwerken van elk bericht.
In het volgende codevoorbeeld wordt de get_messages
methode gebruikt om 16 berichten in één aanroep op te halen. Vervolgens wordt elk bericht verwerkt met behulp van een for
lus. De time-out voor onzichtbaarheid wordt ingesteld op vijf minuten voor elk bericht.
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)
Een wachtrij verwijderen
Als u een wachtrij en alle berichten in de wachtrij wilt verwijderen, roept u de delete_queue
methode aan.
print("Deleting queue: " + queue_name)
queue_service.delete_queue(queue_name)