Aracılığıyla paylaş


Hızlı Başlangıç: Python için Azure Kuyruk Depolama istemci kitaplığı

Python için Azure Kuyruk Depolama istemci kitaplığını kullanmaya başlayın. Azure Kuyruk Depolama, daha sonra almak ve işlemek üzere çok sayıda iletiyi depolamaya yönelik bir hizmettir. Paketi yüklemek için bu adımları izleyin ve temel görevler için örnek kodu deneyin.

API başvuru belgeleri | Kitaplık kaynak kodu | Paket (Python Paket Dizini) | Örnekleri

Python için Azure Kuyruk Depolama istemci kitaplığını kullanarak:

  • Kuyruk oluştur
  • Kuyruğa ileti ekleme
  • Kuyruktaki iletilere göz atma
  • Kuyruktaki iletiyi güncelleştirme
  • Kuyruğun uzunluğunu al
  • Kuyruktan ileti alma
  • Kuyruktan iletileri silme
  • Bir kuyruğu sil

Önkoşullar

Kurulum

Bu bölümde, Python için Azure Kuyruk Depolama istemci kitaplığıyla çalışmak üzere bir proje hazırlama işleminde size yol gösterir.

Projeyi oluşturma

queues-quickstart adlı bir Python uygulaması oluşturun.

  1. Konsol penceresinde (cmd, PowerShell veya Bash gibi) proje için yeni bir dizin oluşturun.

    mkdir queues-quickstart
    
  2. Yeni oluşturulan queues-quickstart dizinine geçin.

    cd queues-quickstart
    

Paketleri yükleme

Proje dizininden komutunu kullanarak Python paketi için Azure Kuyruk Depolama istemci kitaplığını pip install yükleyin. Azure hizmetlerine parolasız bağlantılar için azure-identity paketi gereklidir.

pip install azure-storage-queue azure-identity

Uygulama çerçevesini ayarlama

  1. Kod düzenleyicinizde yeni bir metin dosyası açma

  2. İfadeleri ekleyin import

  3. Temel özel durum işleme dahil olmak üzere programın yapısını oluşturma

    Kod şu şekildedir:

    import os, uuid
    from azure.identity import DefaultAzureCredential
    from azure.storage.queue import QueueServiceClient, QueueClient, QueueMessage, BinaryBase64DecodePolicy, BinaryBase64EncodePolicy
    
    try:
        print("Azure Queue storage - Python quickstart sample")
        # Quickstart code goes here
    except Exception as ex:
        print('Exception:')
        print(ex)
    
    
  4. Yeni dosyayı queues-quickstart dizinine queues-quickstart.py olarak kaydedin.

Azure'da kimlik doğrulaması

Çoğu Azure hizmeti için uygulama istekleri yetkilendirilmelidir. DefaultAzureCredential Azure Identity istemci kitaplığı tarafından sağlanan sınıfı kullanmak, kodunuzda Azure hizmetlerine parolasız bağlantılar uygulamak için önerilen yaklaşımdır.

Ayrıca parolaları, bağlantı dizesi veya diğer kimlik bilgilerini kullanarak Azure hizmetlerine yönelik istekleri doğrudan yetkilendirilebilirsiniz. Ancak bu yaklaşım dikkatli kullanılmalıdır. Geliştiriciler, bu gizli bilgileri güvensiz bir konumda asla açığa çıkarmamak için dikkatli olmalıdır. Parolaya veya gizli anahtara erişim kazanan herkes kimlik doğrulaması yapabilir. DefaultAzureCredential parolasız kimlik doğrulamasına izin vermek için hesap anahtarı üzerinde gelişmiş yönetim ve güvenlik avantajları sunar. Her iki seçenek de aşağıdaki örnekte gösterilmiştir.

DefaultAzureCredential , Python için Azure Identity istemci kitaplığı tarafından sağlanan bir sınıftır. DefaultAzureCredential hakkında daha fazla bilgi edinmek için DefaultAzureCredential genel bakışına bakın. DefaultAzureCredential birden çok kimlik doğrulama yöntemini destekler ve çalışma zamanında hangi yöntemin kullanılacağını belirler. Bu yaklaşım, uygulamanızın ortama özgü kod uygulamadan farklı ortamlarda (yerel ve üretim) farklı kimlik doğrulama yöntemleri kullanmasını sağlar.

Örneğin, uygulamanız yerel olarak geliştirirken Visual Studio Code oturum açma kimlik bilgilerinizi kullanarak kimlik doğrulaması yapabilir ve ardından Azure'a dağıtıldıktan sonra yönetilen kimlik kullanabilir. Bu geçiş için kod değişikliği gerekmez.

Yerel olarak geliştirme yaparken, kuyruk verilerine erişen kullanıcı hesabının doğru izinlere sahip olduğundan emin olun. Kuyruk verilerini okumak ve yazmak için Depolama Kuyruğu Veri Katkıcısı gerekir. Kendinize bu rolü atamak için Kullanıcı Erişimi Yöneticisi rolüne veya Microsoft.Authorization/roleAssignments/write eylemini içeren başka bir role atanmalısınız. Azure portalı, Azure CLI veya Azure PowerShell'i kullanarak kullanıcıya Azure RBAC rolleri atayabilirsiniz. Rol atamaları için kullanılabilir kapsamlar hakkında daha fazla bilgiyi kapsam genel bakış sayfasından öğrenebilirsiniz.

Bu senaryoda, En Az Ayrıcalık İlkesi'ni izlemek için depolama hesabı kapsamındaki kullanıcı hesabınıza izinler atayacaksınız. Bu uygulama kullanıcılara yalnızca gereken minimum izinleri verir ve daha güvenli üretim ortamları oluşturur.

Aşağıdaki örnek, depolama hesabınızdaki kuyruk verilerine hem okuma hem de yazma erişimi sağlayan Depolama Kuyruğu Verileri Katkıda Bulunanı rolünü kullanıcı hesabınıza atar.

Önemli

Çoğu durumda rol atamasının Azure'a yayılması bir veya iki dakika sürer, ancak nadir durumlarda sekiz dakikaya kadar sürebilir. Kodunuzu ilk kez çalıştırdığınızda kimlik doğrulama hataları alıyorsanız, birkaç dakika bekleyin ve yeniden deneyin.

  1. Azure portalında ana arama çubuğunu veya sol gezintiyi kullanarak depolama hesabınızı bulun.

  2. Depolama hesabına genel bakış sayfasında sol taraftaki menüden Erişim denetimi (IAM) öğesini seçin.

  3. Erişim denetimi (IAM) sayfasında Rol atamaları sekmesini seçin.

  4. Üst menüden + Ekle'yi seçin ve ardından açılan menüden Rol ataması ekle'yi seçin.

Rol atamayı gösteren ekran görüntüsü.

  1. Sonuçları istenen role göre filtrelemek için arama kutusunu kullanın. Bu örnek için Depolama Kuyruğu Veri Katkıda Bulunanı'nı arayın ve eşleşen sonucu seçin ve ardından İleri'yi seçin.

  2. Erişim atama altında, Kullanıcı, grup veya hizmet sorumlusu seçeneğini seçin ve ardından + Üyeleri seç seçeneğine tıklayın.

  3. İletişim kutusunda Microsoft Entra kullanıcı adınızı (genellikle user@domain e-posta adresiniz) arayın ve iletişim kutusunun alt kısmındaki Seç'i seçin.

  4. Son sayfaya gitmek için Gözden geçir + ata seçeneğini belirleyin ve ardından işlemi tamamlamak için Gözden geçir + ata seçeneğini yeniden seçin.

Nesne modeli

Azure Kuyruk Depolama, çok sayıda iletiyi depolamaya yönelik bir hizmettir. Kuyruk iletisinin boyutu en fazla 64 KB olabilir. Kuyruk, depolama hesabının toplam kapasite sınırına kadar milyonlarca ileti içerebilir. Kuyruklar, genellikle zaman uyumsuz olarak işlenmek üzere bir iş birikimi oluşturmak için kullanılır. Kuyruk Depolama üç tür kaynak sunar:

  • Depolama hesabı: Azure Depolama'ya tüm erişim 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. İleti en fazla 7 gün kuyrukta kalabilir. Sürüm 2017-07-29 veya üzeri için maksimum 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.

Aşağıdaki diyagramda bu kaynaklar arasındaki ilişki gösterilmektedir.

Kuyruk depolama mimarisi diyagramı

Bu kaynaklarla etkileşime geçmek için aşağıdaki Python sınıflarını kullanın:

  • QueueServiceClient: depolama QueueServiceClient hesabınızdaki tüm kuyrukları yönetmenize olanak tanır.
  • QueueClient: sınıfı, QueueClient tek bir kuyruğu ve iletilerini yönetmenize ve işlemenize olanak tanır.
  • QueueMessage: QueueMessage sınıfı, bir kuyruğa receive_messages uygulandığında döndürülen tekil nesneleri temsil eder.

Kod örnekleri

Bu örnek kod parçacıkları, Python için Azure Kuyruk Depolama istemci kitaplığıyla aşağıdaki eylemlerin nasıl yapılacağını gösterir:

Erişimi yetkilendirme ve istemci nesnesi oluşturma

Rolü atadığınız Microsoft Entra hesabıyla kimliğinizin doğrulanmış olduğundan emin olun. Azure CLI, Visual Studio Code veya Azure PowerShell aracılığıyla kimlik doğrulaması yapabilirsiniz.

Aşağıdaki komutu kullanarak Azure CLI aracılığıyla Azure'da oturum açın:

az login

Kimlik doğrulamasından geçtikten sonra, depolama hesabındaki kuyruk verilerine erişmek için bir QueueClient nesnesi oluşturabilir ve DefaultAzureCredential ile yetkilendirme yapabilirsiniz. DefaultAzureCredential önceki adımda oturum açtığınız hesabı otomatik olarak bulur ve kullanır.

Yetkilendirmek için DefaultAzureCredential kullanırken, azure-identity paketini Paketleri Yükleme bölümünde belirtildiği gibi eklediğinizden emin olun. Ayrıca, queues-quickstart.py dosyasına aşağıdaki içeri aktarma deyimini eklediğinizden emin olun:

from azure.identity import DefaultAzureCredential

Kuyruk için bir ad belirleyin ve QueueClient'yi yetkilendirme için kullanarak DefaultAzureCredential sınıfının bir örneğini oluşturun. Depolama hesabındaki kuyruk kaynağını oluşturmak ve bunlarla etkileşim kurmak için bu istemci nesnesini kullanırız.

Önemli

Kuyruk adları yalnızca küçük harf, sayı ve kısa çizgi içerebilir ve harf veya sayı ile başlamalıdır. Her kısa çizginin öncesine ve sonrasına kısa çizgi olmayan bir karakter gelmelidir. Ad da 3 ile 63 karakter uzunluğunda olmalıdır. Kuyrukları adlandırma hakkında daha fazla bilgi için Kuyrukları ve meta verilerini adlandırma bölümüne bakın.

Bloğun içine aşağıdaki kodu try ekleyin ve <storage-account-name> yer tutucu değerini değiştirdiğinizden emin olun.

    print("Azure Queue storage - Python quickstart sample")

    # Create a unique name for the queue
    queue_name = "quickstartqueues-" + str(uuid.uuid4())

    account_url = "https://<storageaccountname>.queue.core.windows.net"
    default_credential = DefaultAzureCredential()

    # Create the QueueClient object
    # We'll use this object to create and interact with the queue
    queue_client = QueueClient(account_url, queue_name=queue_name ,credential=default_credential)

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.

İstemci nesnesini oluştururken Base64 kodlama ve kod çözme işlevlerini yapılandırabilirsiniz:

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

Kuyruk oluştur

QueueClient nesnesini kullanarak, depolama hesabınızda kuyruk oluşturmak için yöntemini çağırıncreate_queue.

Bu kodu bloğun try sonuna ekleyin:

    print("Creating queue: " + queue_name)

    # Create the queue
    queue_client.create_queue()

Kuyruğa ileti ekleme

Aşağıdaki kod parçacığı, send_message yöntemini çağırarak kuyruğa iletiler ekler. Ayrıca üçüncü QueueMessage çağrıdan döndürüleni send_message kaydeder. saved_message, programın ilerleyen bölümlerinde ileti içeriğini güncelleştirmek için kullanılır.

Bu kodu bloğun try sonuna ekleyin:

    print("\nAdding messages to the queue...")

    # Send several messages to the queue
    queue_client.send_message(u"First message")
    queue_client.send_message(u"Second message")
    saved_message = queue_client.send_message(u"Third message")

Kuyruktaki iletilere göz atma

Kuyruktaki iletilere göz atmak için peek_messages yöntemini çağırın. Bu yöntem kuyruğun önünden bir veya daha fazla ileti alır, ancak iletinin görünürlüğünü değiştirmez.

Bu kodu bloğun try sonuna ekleyin:

    print("\nPeek at the messages in the queue...")

    # Peek at messages in the queue
    peeked_messages = queue_client.peek_messages(max_messages=5)

    for peeked_message in peeked_messages:
        # Display the message
        print("Message: " + peeked_message.content)

Kuyruktaki iletiyi güncelleştirme

yöntemini çağırarak iletinin içeriğini güncelleştirin update_message . Bu yöntem, iletinin görünürlük zaman aşımını ve içeriğini değiştirebilir. İleti içeriğinin boyutu 64 KB'a kadar olan UTF-8 kodlanmış bir dize olmalıdır. Yeni içerikle birlikte, kodda daha önce kaydedilmiş olan iletideki değerleri de geçirin. saved_message Değerler, hangi iletinin güncelleştirilecek olduğunu belirler.

    print("\nUpdating the third message in the queue...")

    # Update a message using the message saved when calling send_message earlier
    queue_client.update_message(saved_message, pop_receipt=saved_message.pop_receipt, \
        content="Third message has been updated")

Kuyruğun uzunluğunu al

Kuyruktaki ileti sayısıyla ilgili bir tahmin alabilirsiniz.

get_queue_properties yöntemi, approximate_message_countdahil olmak üzere kuyruk özelliklerini döndürür.

properties = queue_client.get_queue_properties()
count = properties.approximate_message_count
print("Message count: " + str(count))

Hizmet isteğinize yanıt verdikten sonra iletiler eklenebileceği veya kaldırılabildiği için sonuç yaklaşık olarak elde edilir.

Kuyruktan ileti alma

Yöntemini çağırarak receive_messages daha önce eklenen iletileri indirebilirsiniz.

Bu kodu bloğun try sonuna ekleyin:

    print("\nReceiving messages from the queue...")

    # Get messages from the queue
    messages = queue_client.receive_messages(max_messages=5)

receive_messages yöntemini çağırırken, kuyruktan alınacak mesajların sayısını belirtmek için isteğe bağlı olarak max_messages değerini belirtebilirsiniz. Varsayılan değer 1 iletidir ve en fazla 32 iletidir. Ayrıca, zaman aşımı dönemi için visibility_timeoutdiğer işlemlerden gelen iletileri gizleyen bir değeri de belirtebilirsiniz. Varsayılan değer 30 saniyedir.

Kuyruktan iletileri silme

İletiler alındıktan ve işlendikten sonra kuyruktan silin. Bu durumda, işlem yalnızca konsolda iletiyi görüntüler.

Uygulama, iletileri işlemeye ve silmeye başlamadan önce input çağrılarak kullanıcı girişi için duraklatılır. Azure portalınızda kaynakların silinmeden önce doğru oluşturulduğunu doğrulayın. Açıkça silinmeyen tüm iletiler sonunda bunları işlemek için başka bir şans için kuyrukta yeniden görünür hale gelir.

Bu kodu bloğun try sonuna ekleyin:

    print("\nPress Enter key to 'process' messages and delete them from the queue...")
    input()

    for msg_batch in messages.by_page():
            for msg in msg_batch:
                # "Process" the message
                print(msg.content)
                # Let the service know we're finished with
                # the message and it can be safely deleted.
                queue_client.delete_message(msg)

Bir kuyruğu sil

Aşağıdaki kod, delete_queue yöntemini kullanarak kuyruğu silmek suretiyle uygulamanın oluşturduğu kaynakları temizler.

Bu kodu bloğun try sonuna ekleyin ve dosyayı kaydedin:

    print("\nPress Enter key to delete the queue...")
    input()

    # Clean up
    print("Deleting queue...")
    queue_client.delete_queue()

    print("Done")

Kodu çalıştırma

Bu uygulama bir Azure kuyruğuna üç ileti oluşturur ve ekler. Kod, kuyruktaki iletileri listeler, ardından onları alır ve siler, en sonunda ise kuyruğu siler.

Konsol pencerenizde , queues-quickstart.py dosyasını içeren dizine gidin ve uygulamayı çalıştırmak için aşağıdaki python komutu kullanın.

python queues-quickstart.py

Uygulamanın çıkışı aşağıdaki örneğe benzer:

Azure Queue Storage client library - Python quickstart sample
Creating queue: quickstartqueues-<UUID>

Adding messages to the queue...

Peek at the messages in the queue...
Message: First message
Message: Second message
Message: Third message

Updating the third message in the queue...

Receiving messages from the queue...

Press Enter key to 'process' messages and delete them from the queue...

First message
Second message
Third message has been updated

Press Enter key to delete the queue...

Deleting queue...
Done

Uygulama iletileri almadan önce duraklatıldığında Azure portalında depolama hesabınızı denetleyin. İletilerin kuyrukta olduğunu doğrulayın.

İletileri Enter almak ve silmek için tuşuna basın. İstendiğinde, kuyruğu silmek ve demoyu tamamlamak için Enter tuşuna yeniden basın.

Sonraki adımlar

Bu hızlı başlangıçta Python kodunu kullanarak kuyruk oluşturmayı ve ileti eklemeyi öğrendiniz. Ardından iletileri göz atıp almayı ve silmeyi öğrendiniz. Son olarak, ileti kuyruğu silmeyi öğrendinsiniz.

Öğreticiler, örnekler, hızlı başlangıçlar ve diğer belgeler için şu adresi ziyaret edin: