Udostępnij za pośrednictwem


Przykłady kodu usługi Azure Queue Storage przy użyciu bibliotek klienckich języka Python w wersji 2

W tym artykule przedstawiono przykłady kodu, które używają wersji 2 biblioteki klienta usługi Azure Queue Storage dla języka Python.

31 marca 2023 r. wycofaliśmy obsługę bibliotek zestawu Azure SDK, które nie są zgodne z bieżącymi wytycznymi dotyczącymi zestawu Azure SDK. Nowe biblioteki zestawu Azure SDK są regularnie aktualizowane w celu zapewnienia spójnych środowisk i poprawy stanu zabezpieczeń. Zaleca się przejście do nowych bibliotek zestawu Azure SDK w celu skorzystania z nowych funkcji i krytycznych aktualizacji zabezpieczeń.

Mimo że starsze biblioteki mogą być nadal używane poza 31 marca 2023 r., nie będą już otrzymywać oficjalnej pomocy technicznej i aktualizacji od firmy Microsoft. Aby uzyskać więcej informacji, zobacz ogłoszenie o wycofaniu pomocy technicznej.

Przykłady kodu korzystające z najnowszej wersji 12.x biblioteki klienta można znaleźć w temacie Szybki start: biblioteka klienta usługi Azure Queue Storage dla języka Python.

Utwórz kolejkę

Dodaj następujące import dyrektywy:

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

Poniższy kod tworzy QueueService obiekt przy użyciu parametry połączenia magazynu.

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

Komunikaty kolejek platformy Azure są przechowywane jako tekst. Jeśli chcesz przechowywać dane binarne, przed umieszczeniem komunikatu w kolejce skonfiguruj funkcje kodowania i dekodowania Base64.

Skonfiguruj funkcje kodowania i dekodowania Base64 w obiekcie usługi Queue Storage:

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

Wstawianie komunikatu do kolejki

Aby wstawić komunikat do kolejki, użyj put_message metody , aby utworzyć nowy komunikat i dodać go do kolejki.

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

Zaglądaj na wiadomości

Możesz zajrzeć do komunikatów bez usuwania ich z kolejki, wywołując metodę peek_messages . Domyślnie ta metoda zagląda do pojedynczego komunikatu.

messages = queue_service.peek_messages(queue_name)

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

Zmiana zawartości komunikatu w kolejce

Poniższy kod używa update_message metody w celu zaktualizowania komunikatu. Limit czasu widoczności jest ustawiony na 0, co oznacza, że komunikat jest wyświetlany natychmiast i zawartość jest aktualizowana.

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

Pobieranie długości kolejki

Metoda get_queue_metadata zwraca właściwości kolejki, w tym approximate_message_count.

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

Wynik jest przybliżony tylko dlatego, że komunikaty można dodać lub usunąć po odpowiedzi usługi na żądanie.

Dequeue messages (Dequeue messages)

Podczas wywoływania get_messages domyślnie zostanie wyświetlony następny komunikat w kolejce. Zwrócony komunikat staje get_messages się niewidoczny dla innych kodów odczytujących komunikaty z tej kolejki. Domyślnie komunikat pozostanie niewidoczny przez 30 sekund. Aby zakończyć usuwanie komunikatu z kolejki, należy również wywołać 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)

Istnieją dwa sposoby dostosowania pobierania komunikatów z kolejki. Po pierwsze można uzyskać komunikaty zbiorczo (do 32). Po drugie można ustawić dłuższy lub krótszy limit czasu niewidoczności, dzięki czemu kod będzie mieć więcej lub mniej czasu na pełne przetworzenie każdego komunikatu.

Poniższy przykład kodu używa metody do pobierania get_messages 16 komunikatów w jednym wywołaniu. Następnie przetwarza każdy komunikat przy użyciu for pętli. Ustawia również limitu czasu niewidoczności na pięć minut dla każdego komunikatu.

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)

Usuwanie kolejki

Aby usunąć kolejkę i wszystkie zawarte w niej komunikaty, wywołaj metodę delete_queue .

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