Kodexempel för Azure Queue Storage med python version 2-klientbibliotek

Den här artikeln visar kodexempel som använder version 2 av Azure Queue Storage-klientbiblioteket för Python.

Den 31 mars 2023 drog vi tillbaka stödet för Azure SDK-bibliotek som inte följer de aktuella Riktlinjerna för Azure SDK. De nya Azure SDK-biblioteken uppdateras regelbundet för att skapa konsekventa upplevelser och stärka din säkerhetsstatus. Vi rekommenderar att du övergår till de nya Azure SDK-biblioteken för att dra nytta av de nya funktionerna och viktiga säkerhetsuppdateringar.

Även om de äldre biblioteken fortfarande kan användas efter den 31 mars 2023 får de inte längre officiell support och uppdateringar från Microsoft. Mer information finns i meddelandet om supportavgång.

Kodexempel med den senaste version 12.x-klientbiblioteksversionen finns i Snabbstart: Azure Queue Storage-klientbibliotek för Python.

Skapa en kö

Lägg till följande import direktiv:

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

Följande kod skapar ett QueueService objekt med hjälp av lagrings-niska veze.

# 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-kömeddelanden lagras som text. Om du vill lagra binära data konfigurerar du Base64-kodnings- och avkodningsfunktioner innan du placerar ett meddelande i kön.

Konfigurera funktioner för Base64-kodning och avkodning i Queue Storage-objekt:

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

Infoga ett meddelande i en kö

Om du vill infoga ett meddelande i en kö använder du put_message metoden för att skapa ett nytt meddelande och lägga till det i kön.

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

Titta på meddelanden

Du kan titta på meddelanden utan att ta bort dem från kön genom att anropa peek_messages metoden. Som standard tittar den här metoden på ett enda meddelande.

messages = queue_service.peek_messages(queue_name)

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

Ändra innehållet i ett meddelande i kön

Följande kod använder update_message metoden för att uppdatera ett meddelande. Tidsgränsen för synlighet är inställd på 0, vilket innebär att meddelandet visas omedelbart och innehållet uppdateras.

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

Hämta kölängden

Metoden get_queue_metadata returnerar köegenskaper inklusive approximate_message_count.

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

Resultatet är bara ungefärligt eftersom meddelanden kan läggas till eller tas bort när tjänsten svarar på din begäran.

Avqueue-meddelanden

När du anropar get_messages visas nästa meddelande i kön som standard. Ett meddelande som returneras från get_messages blir osynligt för andra kodläsningsmeddelanden från den här kön. Som standard är det här meddelandet osynligt i 30 sekunder. Om du vill slutföra borttagningen av meddelandet från kön måste du även anropa 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)

Det finns två metoder som du kan använda för att anpassa meddelandehämtningen från en kö. För det första kan du hämta en grupp med meddelanden (upp till 32). För det andra kan du ange en längre eller kortare tidsgräns för osynlighet för att ge koden mer eller mindre tid att bearbeta klart varje meddelande.

I följande kodexempel används get_messages metoden för att hämta 16 meddelanden i ett anrop. Sedan bearbetas varje meddelande med hjälp av en for loop. Koden ställer också in tidsgränsen för osynlighet till fem minuter för varje meddelande.

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)

Ta bort en kö

Om du vill ta bort en kö och alla meddelanden som finns i den anropar du delete_queue metoden.

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