Esempi di codice di Archiviazione code di Azure con librerie client Python versione 2

Questo articolo illustra gli esempi di codice che usano la versione 2 della libreria client di Archiviazione code di Azure per Python.

Il 31 marzo 2023 è stato ritirato il supporto per le librerie di Azure SDK che non sono conformi alle linee guida correnti di Azure SDK. Le nuove librerie di Azure SDK vengono aggiornate regolarmente per offrire esperienze coerenti e migliorare la postura di sicurezza. È consigliabile passare alle nuove librerie di Azure SDK per sfruttare le nuove funzionalità e gli aggiornamenti critici della sicurezza.

Anche se le librerie precedenti possono ancora essere usate oltre il 31 marzo 2023, non riceveranno più il supporto e gli aggiornamenti ufficiali da Microsoft. Per altre informazioni, vedere l'annuncio del ritiro del supporto.

Per esempi di codice che usano la versione più recente della libreria client 12.x, vedere Avvio rapido: Libreria client di Archiviazione code di Azure per Python.

Crea una coda

Aggiungere le direttive import seguenti:

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

Il codice seguente crea un QueueService oggetto usando il stringa di connessione di archiviazione.

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

I messaggi della coda di Azure vengono archiviati come testo. Se si desidera archiviare dati binari, configurare le funzioni di codifica e decodifica Base64 prima di inserire un messaggio nella coda.

Configurare le funzioni di codifica e decodifica Base64 nell'oggetto Archiviazione code:

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

Inserire un messaggio in una coda

Per inserire un messaggio in una coda, usare il put_message metodo per creare un nuovo messaggio e aggiungerlo alla coda.

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

Visualizzare in anteprima i messaggi

È possibile visualizzare i messaggi senza rimuoverli dalla coda chiamando il peek_messages metodo . Per impostazione predefinita, questo metodo visualizza un singolo messaggio.

messages = queue_service.peek_messages(queue_name)

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

Cambiare il contenuto di un messaggio in coda

Il codice seguente usa il update_message metodo per aggiornare un messaggio. Il timeout di visibilità è impostato su 0. Ciò significa che il messaggio viene visualizzato immediatamente e il contenuto viene aggiornato.

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

Recuperare la lunghezza della coda

Il get_queue_metadata metodo restituisce le proprietà della coda, incluso approximate_message_count.

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

Il risultato è approssimativo perché i messaggi possono essere aggiunti o rimossi dopo che il servizio risponde alla richiesta.

Rimuovere dalla coda i messaggi

Quando si chiama get_messages, viene visualizzato il messaggio successivo nella coda per impostazione predefinita. Un messaggio restituito da get_messages diventa invisibile a qualsiasi altro elemento di codice che legge i messaggi di questa coda. Per impostazione predefinita, questo messaggio rimane invisibile per 30 secondi. Per completare la rimozione del messaggio dalla coda, è necessario chiamare anche 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)

È possibile personalizzare il recupero di messaggi da una coda in due modi. Innanzitutto, è possibile recuperare un batch di messaggi (massimo 32). In secondo luogo, è possibile impostare un timeout di invisibilità più lungo o più breve assegnando al codice più o meno tempo per l'elaborazione completa di ogni messaggio.

Nell'esempio di codice seguente viene usato il get_messages metodo per ottenere 16 messaggi in una sola chiamata. Ogni messaggio viene poi elaborato con un ciclo for. Per ogni messaggio, inoltre, il timeout di invisibilità viene impostato su cinque minuti.

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)

Eliminare una coda

Per eliminare una coda e tutti i messaggi contenuti, chiamare il delete_queue metodo .

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