Aracılığıyla paylaş


Python sürüm 2 istemci kitaplıklarını kullanan Azure Kuyruk Depolama kod örnekleri

Bu makalede, Python için Azure Kuyruk Depolama istemci kitaplığının 2. sürümünü kullanan kod örnekleri gösterilmektedir.

31 Mart 2023'te, geçerli Azure SDK yönergelerine uymayan Azure SDK kitaplıkları desteğini kullanımdan kaldırdık. Yeni Azure SDK kitaplıkları, tutarlı deneyimler sağlamak ve güvenlik duruşunuzu güçlendirmek için düzenli olarak güncelleştirilir. Yeni özelliklerden ve kritik güvenlik güncelleştirmelerinden yararlanmak için yeni Azure SDK kitaplıklarına geçiş yapmanızı öneririz.

Eski kitaplıklar 31 Mart 2023'ten sonra da kullanılabilir olsa da artık Microsoft'tan resmi destek ve güncelleştirmeler almayacaktır. Daha fazla bilgi için destek kullanımdan kaldırma duyurusu'na bakın.

En son sürüm 12.x istemci kitaplığı sürümünü kullanan kod örnekleri için bkz . Hızlı Başlangıç: Python için Azure Kuyruk Depolama istemci kitaplığı.

Kuyruk oluştur

Aşağıdaki import yönergeleri ekleyin:

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

Aşağıdaki kod, depolama bağlantı dizesi kullanarak bir QueueService nesne oluşturur.

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

Azure kuyruk iletileri metin olarak depolanır. İkili verileri depolamak istiyorsanız, kuyruğa ileti yerleştirmeden önce Base64 kodlama ve kod çözme işlevlerini ayarlayın.

Kuyruk Depolama nesnesinde Base64 kodlama ve kod çözme işlevlerini yapılandırın:

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

Kuyruğa bir ileti yerleştirme

Kuyruğa ileti eklemek için yöntemini kullanarak put_message yeni bir ileti oluşturun ve kuyruğa ekleyin.

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

İletilere göz atma

peek_messages yöntemini çağırarak mesajlara kuyruktan çıkarmadan göz atabilirsiniz. Varsayılan olarak, bu yöntem tek bir iletiye bakar.

messages = queue_service.peek_messages(queue_name)

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

Kuyruğa alınan iletinin içeriğini değiştirme

Aşağıdaki kod, update_message bir iletiyi güncelleştirmek için yöntemini kullanır. Görünürlük zaman aşımı 0 olarak ayarlanır, yani ileti hemen görünür ve içerik güncelleştirilir.

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

Kuyruk uzunluğunu al

get_queue_metadata yöntemi, dahil olmak üzere approximate_message_countkuyruk özelliklerini döndürür.

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

Sonuç yaklaşıktır çünkü hizmet isteğinize yanıt verdikten sonra iletiler eklenebilir veya kaldırılabilir.

İletileri sıralama

get_messages çağırdığınızda, kuyruktaki bir sonraki iletiyi varsayılan olarak alırsınız. tarafından get_messages döndürülen bir ileti, bu kuyruktan gelen iletileri okuyan diğer kodlar için görünmez hale gelir. Varsayılan olarak bu ileti 30 saniye görünmez kalır. kuyruktan iletiyi kaldırmayı tamamlamak için delete_message'ı da çağırmanız gerekir.

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)

İletilerin bir kuyruktan alınma şeklini iki yöntemle özelleştirebilirsiniz. İlk olarak toplu iletiler alabilirsiniz (en fazla 32). İkinci olarak daha uzun veya daha kısa bir görünmezlik süresi ayarlayarak kodunuzun her iletiyi tamamen işlemesi için daha az veya daha fazla zaman tanıyabilirsiniz.

Aşağıdaki kod örneği, bir çağrıda get_messages 16 ileti almak için yöntemini kullanır. Ardından bir döngü kullanarak for her iletiyi işler. Ayrıca her ileti için görünmezlik zaman aşımı beş dakika olarak ayarlanır.

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)

Bir kuyruk silme

Bir kuyruğu ve içindeki tüm iletileri silmek için yöntemini çağırın delete_queue .

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