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ří objekt QueueService pomocí připojovacího řetězce ú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 ve frontě Azure jsou ukládány ve formě textu. Pokud chcete ukládat binární data, nastavte funkce pro kódování a dekódování 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, a to zavoláním metody peek_messages. 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é zavolat 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. Nejprve si můžete získat 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)

Smazat frontu

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)