Udostępnij przez


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 obiekt QueueService przy użyciu łańcucha połączenia do 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

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

Pobierz długość 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.

Usuwanie wiadomości z kolejki

Podczas wywoływania get_messages domyślnie zostanie wyświetlony następny komunikat w kolejce. Komunikat zwrócony z get_messages staje się niewidoczny dla jakiegokolwiek innego kodu odczytującego wiadomości 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. Najpierw możesz odebrać partię wiadomości (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 `get_messages` do pobrania 16 komunikatów podczas jednego wywołania. 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)

Usuń kolejkę

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)