Sdílet prostřednictvím


Ukázky kódu azure Queue Storage s využitím klientských knihoven Pythonu verze 2

Tento článek ukazuje ukázky kódu, které používají verzi 2 klientské knihovny Azure Queue Storage pro Python.

31. března 2023 jsme vyřadili podporu knihoven sady Azure SDK, které nevyhovují aktuálním pokynům sady Azure SDK. Nové knihovny sady Azure SDK se pravidelně aktualizují, aby poskytovaly konzistentní prostředí a posilovaly zabezpečení. Doporučujeme přejít na nové knihovny sady Azure SDK, abyste mohli využívat nové funkce a důležité aktualizace zabezpečení.

I když starší knihovny je možné používat i po 31. březnu 2023, nebudou už od Microsoftu dostávat oficiální podporu a aktualizace. Další informace najdete v oznámení o vyřazení podpory.

Ukázky kódu využívající nejnovější verzi klientské knihovny 12.x najdete v rychlém startu: Klientská knihovna Azure Queue Storage pro Python.

Vytvořit frontu

Přidejte následující import direktivy:

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

Následující kód vytvoří QueueService objekt pomocí připojovací řetězec úložiště.

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

Zprávy fronty Azure se ukládají jako text. Pokud chcete ukládat binární data, nastavte kódování a dekódování funkcí Base64 před vložením zprávy do fronty.

Konfigurace kódování a dekódování funkcí Base64 v objektu Queue Storage:

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

Vložení zprávy do fronty

Pokud chcete vložit zprávu do fronty, pomocí put_message metody vytvořte novou zprávu a přidejte ji do fronty.

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

Náhled zpráv

Můžete si prohlédnout zprávy, aniž byste je odebrali z fronty voláním peek_messages metody. Ve výchozím nastavení tato metoda zobrazí náhled na jednu zprávu.

messages = queue_service.peek_messages(queue_name)

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

Změna obsahu zpráv zařazených ve frontě

Následující kód používá metodu update_message k aktualizaci zprávy. Časový limit viditelnosti je nastavený na hodnotu 0, což znamená, že se zpráva zobrazí okamžitě a obsah se aktualizuje.

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

Získání délky fronty

Metoda get_queue_metadata vrátí vlastnosti fronty včetně approximate_message_count.

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

Výsledek je pouze přibližný, protože zprávy je možné přidat nebo odebrat poté, co služba odpoví na vaši žádost.

Vyřazení zpráv z fronty

Při volání get_messages se ve výchozím nastavení zobrazí další zpráva ve frontě. Zpráva vrácená z get_messages této fronty se stane neviditelnou pro jakýkoli jiný kód, který čte zprávy z této fronty. Ve výchozím nastavení tato zpráva zůstává neviditelná po dobu 30 sekund. Chcete-li dokončit odebrání zprávy z fronty, musíte také volat 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)

Načítání zpráv z fronty si můžete přizpůsobit dvěma způsoby. Za prvé si můžete načíst dávku zpráv (až 32). Za druhé si můžete nastavit delší nebo kratší časový limit neviditelnosti, aby měl váš kód více nebo méně času na úplné zpracování jednotlivých zpráv.

Následující příklad kódu používá metodu get_messages k získání 16 zpráv v jednom volání. Potom zpracuje každou zprávu pomocí smyčky for . Také se pro každou zprávu nastaví časový limit neviditelnosti 5 minut.

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)

Odstranění fronty

Pokud chcete odstranit frontu a všechny zprávy obsažené v ní, zavolejte metodu delete_queue .

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