Ejemplos de código de Azure Queue Storage que usan bibliotecas cliente de la versión 2 de Python

En este artículo, se muestran ejemplos de código que usan la versión 2 de la biblioteca cliente de Azure Queue Storage para Python.

El 31 de marzo de 2023, se retiró el soporte técnico para las bibliotecas del SDK de Azure que no cumplen las directrices actuales del SDK de Azure. Las nuevas bibliotecas del SDK de Azure se actualizan periódicamente para impulsar experiencias coherentes y reforzar la posición de seguridad. Se recomienda realizar la transición a las nuevas bibliotecas del SDK de Azure para aprovechar las nuevas funcionalidades y las actualizaciones de seguridad críticas.

Aunque las bibliotecas anteriores todavía se pueden usar más allá del 31 de marzo de 2023, ya no recibirán soporte técnico oficial ni actualizaciones de Microsoft. Para obtener más información, consulte el anuncio de retirada de soporte técnico.

Para ver ejemplos de código que usan la versión más reciente de la biblioteca cliente 12.x, consulte Inicio rápido: Biblioteca cliente de Azure Queue Storage para Python.

Creación de una cola

Agregue las siguientes directivas import:

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

El código siguiente crea un objeto QueueService con la cadena de conexión de almacenamiento.

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

Los mensajes de la cola de Azure se almacenan como texto. Si quiere almacenar datos binarios, configure las funciones de codificación y descodificación de Base64 antes de colocar un mensaje en la cola.

Configure las funciones de codificación y descodificación de Base64 en el objeto de Queue Storage:

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

un mensaje en una cola

Para insertar un mensaje en una cola, use el método put_message para crear un mensaje y agregarlo a la cola.

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

Inspección de mensajes

Puede ver el código sin salir de los mensajes sin tener que quitarlos de la cola, mediante una llamada al método peek_messages. De forma predeterminada, este método ve el código sin salir en un único mensaje.

messages = queue_service.peek_messages(queue_name)

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

contenido de un mensaje en cola

En el código siguiente se usa el método update_message para actualizar un mensaje. El tiempo de espera de visibilidad se establece en 0, lo que significa que el mensaje aparece inmediatamente y se actualiza el contenido.

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

la longitud de la cola

El método get_queue_metadata devuelve propiedades de cola, incluido approximate_message_count.

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

El resultado solo es aproximado, ya que se pueden agregar o borrar mensajes después de que el servicio responda la solicitud.

Retirar mensajes de la cola

Si llama a get_messages, obtiene, de forma predeterminada, el siguiente mensaje de una cola. Un mensaje devuelto por get_messages se hace invisible a cualquier otro código de lectura de mensajes de esta cola. De forma predeterminada, este mensaje permanece invisible durante 30 segundos. Para terminar quitando el mensaje de la cola, también debe llamar 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)

Hay dos formas de personalizar la recuperación de mensajes de una cola. En primer lugar, puede obtener un lote de mensajes (hasta 32). En segundo lugar, puede establecer un tiempo de espera de la invisibilidad más largo o más corto para que el código disponga de más o menos tiempo para procesar cada mensaje.

El siguiente ejemplo de código usa el método get_messages para obtener 16 mensajes en una llamada. A continuación, procesa cada mensaje con un bucle for. También establece el tiempo de espera de la invisibilidad en cinco minutos para cada mensaje.

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)

Eliminación de una cola

Para eliminar una cola y todos los mensajes que contiene, llame al método delete_queue.

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