Python'dan Azure Kuyruk Depolama kullanma
Genel Bakış
Bu makalede Azure Kuyruk Hizmeti'nin kullanımıyla ilgili yaygın Depolama yer almaktadır. Ele alınan senaryolar kuyruk iletilerini ekleme, göz atma, alma ve silmeyi içerir. Kuyruk oluşturma ve silme kodu da ele almaktadır.
Bu makaledeki örnekler Python'da yazılmıştır ve Python için Azure Kuyruk Depolama istemci kitaplığını kullanır. Kuyruklar hakkında daha fazla bilgi için Sonraki adımlar bölümüne bakın.
Kuyruk depolama nedir?
Azure Kuyruk depolama, HTTP veya HTTPS kullanan kimlik doğrulaması yapılmış çağrılar aracılığıyla dünyanın her yerinden erişilebilen çok sayıda iletinin depolanması için bir hizmettir. Tek bir kuyruk iletisinin boyutu 64 KB’ye kadar olabilir ve bir kuyrukta, depolama hesabının toplam kapasite sınırına kadar milyonlarca ileti bulunabilir. Kuyruk depolama genellikle zaman uyumsuz olarak işlenecek iş biriktirme listesi oluşturmak için kullanılır.
Kuyruk hizmeti kavramlar
Azure Kuyruk hizmeti aşağıdaki bileşenleri içerir:

Depolama hesabı: Tüm Azure depolama erişimi bir depolama hesabı üzerinden yapılır. Depolama hesapları hakkında daha fazla bilgi için bkz. depolama hesabına genel bakış.
Kuyruk: Kuyrukta bir dizi ileti vardır. Tüm iletiler bir kuyrukta olmalıdır. Kuyruk adının tamamen küçük harfli olması gerektiğini unutmayın. Kuyrukların adlandırılması hakkında daha fazla bilgi için bkz. Kuyrukları ve Meta Verileri Adlandırma.
İleti: İleti, biçimi ne olursa olsun en çok 64 KB büyüklüktedir. Bir iletinin kuyrukta kalabileceği en uzun süre 7 gündür. Sürüm 2017-07-29 veya üzeri için, en fazla yaşam süresi herhangi bir pozitif sayı veya iletinin süresinin dolmadığını belirten-1 olabilir. Bu parametre atlanırsa, varsayılan yaşam süresi yedi gündür.
URL biçimi: Kuyruklar şu URL biçimi kullanılarak adreslenebilir: http://
<storage account>. Queue.Core.Windows.net/<queue>Aşağıdaki URL diyagramdaki bir kuyruğun adresini belirtir:
http://myaccount.queue.core.windows.net/incoming-orders
Azure depolama hesabı oluşturma
İlk Azure depolama hesabınızı oluşturmanın en kolay yolu Azure Portalı’nı kullanmaktır. Daha fazla bilgi için bkz. Depolama hesabı oluşturma.
Azure PowerShell, Azure CLI veya .NET için Azure Depolama Kaynak Sağlayıcısı’nı da kullanarak Azure depolama hesabı oluşturabilirsiniz.
Şu anda Azure 'da bir depolama hesabı oluşturmayı tercih ediyorsanız, kodunuzu yerel bir ortamda çalıştırmak ve test etmek için Azurite depolama öykünücüsünü da kullanabilirsiniz. Daha fazla bilgi için bkz. Yerel Azure depolama geliştirmesi Için Azurite öykünücüsünü kullanma.
Python için Azure Depolama SDK'sı indirme ve yükleme
Python için Azure Depolama SDK'sı Python v2.7, v3.3 veya sonraki bir sürümü gerektirir.
PyPI aracılığıyla yükleme
Python Paket Dizini (PyPI) aracılığıyla yüklemek için yazın:
pip install azure-storage-queue
Not
Python v0.36 veya önceki sürümler için Azure Depolama SDK'sından yükseltıyorsanız, en son paketi yüklemeden önce kullanarak eski pip uninstall azure-storage SDK'yı kaldırın.
Alternatif yükleme yöntemleri için bkz. Python için Azure SDK.
Azure portalından kimlik bilgilerinizi kopyalama
örnek uygulama Azure Depolama istek yaptığında yetkilendirilmiş olması gerekir. Bir isteği yetkilendirmek için, depolama hesabı kimlik bilgilerinizi uygulamaya bağlantı dizesi olarak ekleyin. Depolama hesabı kimlik bilgilerinizi görüntülemek için aşağıdaki adımları izleyin:
Azure Portal’ında oturum açın.
Depolama hesabınızı bulun.
Depolama hesabı menü bölmesinde, güvenlik + ağ altında, erişim anahtarları' nı seçin. Burada, her anahtar için hesap erişim anahtarlarını ve tüm bağlantı dizesini görüntüleyebilirsiniz.

Erişim tuşları bölmesinde, anahtarları göster' i seçin.
KEY1 bölümünde bağlantı dizesi değerini bulun. Bağlantı dizesini kopyalamak için Panoya Kopyala simgesini seçin. Bir sonraki bölümde bağlantı dizesi değerini bir ortam değişkenine eklersiniz.

Depolama bağlantı dizelerinizi yapılandırma
Bağlantı dizesini kopyaladıktan sonra, uygulamayı çalıştıran yerel makinede yeni bir ortam değişkenine yazın. Ortam değişkenini ayarlamak için bir konsol penceresi açın ve işletim sisteminizin yönergelerini izleyin. <yourconnectionstring>Gerçek bağlantı dizeniz ile değiştirin.
Windows
setx AZURE_STORAGE_CONNECTION_STRING "<yourconnectionstring>"
ortam değişkenini Windows ekledikten sonra, komut penceresinin yeni bir örneğini başlatmanız gerekir.
Linux
export AZURE_STORAGE_CONNECTION_STRING="<yourconnectionstring>"
macOS
export AZURE_STORAGE_CONNECTION_STRING="<yourconnectionstring>"
Programları yeniden Başlat
Ortam değişkenini ekledikten sonra, ortam değişkenini okumak için gereken tüm çalışan programları yeniden başlatın. Örneğin, devam etmeden önce geliştirme ortamınızı veya düzenleyiciyi yeniden başlatın.
Uygulamanızı Kuyruk Sunucusu'Depolama
nesnesi QueueClient bir kuyrukla çalışmana olanak sağlar. Aşağıdaki kodu, bir Azure kuyruğuna program aracılığıyla erişmek istediğiniz herhangi bir Python dosyasının en üstüne ekleyin:
from azure.storage.queue import (
QueueClient,
BinaryBase64EncodePolicy,
BinaryBase64DecodePolicy
)
import os, uuid
Paket, os bir ortam değişkeni almak için destek sağlar. Paket, uuid kuyruk adı için benzersiz bir tanımlayıcı oluşturma desteği sağlar.
Bir kuyruk oluşturma
Bağlantı dizesi daha önce ayarlanmış ortam AZURE_STORAGE_CONNECTION_STRING değişkeninden alınır.
Aşağıdaki kod, depolama QueueClient bağlantı dizesini kullanarak bir nesnesi 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
q_name = "queue-" + str(uuid.uuid4())
# Instantiate a QueueClient object which will
# be used to create and manipulate the queue
print("Creating queue: " + q_name)
queue_client = QueueClient.from_connection_string(connect_str, q_name)
# Create the queue
queue_client.create_queue()
Azure kuyruk iletileri metin olarak depolanır. İkili verileri depolamak için kuyruğa ileti koymadan önce Base64 kodlama ve kod çözme işlevlerini kurabilirsiniz.
İstemci nesnesini oluştururken Base64 kodlama ve kod çözme işlevlerini yapılandırma.
# Setup Base64 encoding and decoding functions
base64_queue_client = QueueClient.from_connection_string(
conn_str=connect_str, queue_name=q_name,
message_encode_policy = BinaryBase64EncodePolicy(),
message_decode_policy = BinaryBase64DecodePolicy()
)
Kuyruğa bir ileti yerleştirme
Kuyruğa ileti eklemek için yöntemini send_message kullanın.
message = u"Hello World"
print("Adding message: " + message)
queue_client.send_message(message)
İletilere göz atma
yöntemini çağırarak iletileri kuyruktan kaldırmadan göz peek_messages atabilirsiniz. Varsayılan olarak, bu yöntem tek bir iletiye göz atıyor.
# Peek at the first message
messages = queue_client.peek_messages()
for peeked_message in messages:
print("Peeked message: " + peeked_message.content)
Kuyruğa alınan iletinin içeriğini değiştirme
Kuyrukta yer alan bir iletinin içeriğini değiştirebilirsiniz. İleti bir görevi temsil ediyorsa, görevin durumunu güncelleştirmek için bu özelliği kullanabilirsiniz.
Aşağıdaki kod, bir update_message 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_client.receive_messages()
list_result = next(messages)
message = queue_client.update_message(
list_result.id, list_result.pop_receipt,
visibility_timeout=0, content=u'Hello World Again')
print("Updated message to: " + message.content)
Kuyruk uzunluğu alma
Bir kuyruktaki ileti sayısı ile ilgili bir tahmin alabilirsiniz.
aşağıdaki get_queue_properties yöntemi, dahil olmak üzere kuyruk özelliklerini approximate_message_count döndürür.
properties = queue_client.get_queue_properties()
count = properties.approximate_message_count
print("Message count: " + str(count))
Yalnızca hizmet isteğinize yanıt verdikten sonra iletiler eklenene veya kaldırıldığı için sonuç yaklaşık olur.
İletileri kısa mesajla geri gönderme
İki adımda kuyruktan bir iletiyi kaldırın. Kodunuz bir iletiyi işleyemezse, bu iki adımlı işlem aynı iletiyi alalıp yeniden denemenizi sağlar. İleti delete_message başarıyla işlendikten sonra çağrısı.
receive_messages çağırarakvarsayılan olarak kuyrukta bir sonraki iletiyi alırsınız. 'den döndürülen receive_messages ileti, bu kuyruktan iletileri okuyan diğer kodlar için görünmez hale gelir. Varsayılan olarak bu ileti 30 saniye görünmez kalır. İletiyi kuyruktan kaldırmayı tamamlamak için aynı zamanda delete_message.
messages = queue_client.receive_messages()
for message in messages:
print("Dequeueing message: " + message.content)
queue_client.delete_message(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 iletileri receive_messages toplu olarak almak için yöntemini kullanır. Ardından, iç içe geçmiş bir döngü kullanarak her toplu iş içindeki her iletiyi for işler. Ayrıca her ileti için görünmezlik zaman aşımı beş dakika olarak ayarlanır.
messages = queue_client.receive_messages(messages_per_page=5, visibility_timeout=5*60)
for msg_batch in messages.by_page():
for msg in msg_batch:
print("Batch dequeue message: " + msg.content)
queue_client.delete_message(msg)
Bir kuyruk silme
Bir kuyruğu ve içinde yer alan tüm iletileri silmek için yöntemini delete_queue çağırabilirsiniz.
print("Deleting queue: " + queue_client.queue_name)
queue_client.delete_queue()
İpucu
Microsoft Azure Depolama Gezgini’ni deneyin
Microsoft Azure Depolama Gezgini, Microsoft’un Windows, macOS ve Linux üzerinde Azure Depolama verileriyle görsel olarak çalışmanızı sağlayan ücretsiz ve tek başına uygulamasıdır.
Sonraki adımlar
Kuyruk kuyrukları ile ilgili temel bilgileri Depolama daha fazla bilgi edinmek için bu bağlantıları izleyin.