Öğretici: Python'da dinamik yapılandırmayı kullanma

Azure Uygulaması Yapılandırması Python sağlayıcısı yerleşik önbelleğe alma ve yenileme özelliklerini içerir. Bu öğreticide Python uygulamalarında dinamik yapılandırmanın nasıl etkinleştirileceği gösterilmektedir.

Önkoşullar

  • Etkin aboneliği olan bir Azure hesabı. Ücretsiz bir tane oluşturun.
  • Azure Uygulaması Yapılandırma deposu. Mağaza oluşturma.
  • Python 3.8 veya üzeri - Windows'ta Python'ı ayarlama hakkında bilgi için Windows üzerinde Python belgelerine bakın

Anahtar-değer ekleme

Azure Uygulaması Yapılandırma deponuza aşağıdaki anahtar değerini ekleyin. Azure portalını veya CLI'yı kullanarak bir depoya anahtar-değer ekleme hakkında daha fazla bilgi için Anahtar-değer oluşturma bölümüne gidin.

Anahtar Değer Etiket Content type
ileti Merhaba Dünya! Boş bırakın Boş bırakın
Sentinel 1 Boş bırakın Boş bırakın

Not

Sentinel anahtarı, diğer tüm anahtarların değiştirilmesini tamamladıktan sonra güncelleştirdiğiniz bir anahtardır. Uygulamanız sentinel anahtarını izler. Bir değişiklik algılandığında uygulamanız tüm yapılandırma değerlerini yeniler. Bu yaklaşım, uygulamanızdaki yapılandırmanın tutarlılığını sağlamaya yardımcı olur ve Azure Uygulaması Yapılandırma deponuza yapılan isteklerin genel sayısını azaltır ve değişiklikleri tüm anahtarları izlemeye kıyasla daha azdır.

Konsol uygulamaları

  1. app.py adlı yeni bir Python dosyası oluşturun ve aşağıdaki kodu ekleyin:

    from azure.appconfiguration.provider import load, WatchKey
    import os
    import time
    
    connection_string = os.environ.get("APPCONFIGURATION_CONNECTION_STRING")
    
    # Connecting to Azure App Configuration using connection string
    # Setting up to refresh when the Sentinel key is changed.
    config = load(
        connection_string=connection_string,
        refresh_on=[WatchKey("sentinel")],
        refresh_interval=10, # Default value is 30 seconds, shorted for this sample
    )
    
    print("Update the `message` in your Azure App Configuration store using Azure portal or CLI.")
    print("First, update the `message` value, and then update the `sentinel` key value.")
    
    while (True):
        # Refreshing the configuration setting
        config.refresh()
    
        # Current value of message
        print(config["message"])
    
        # Waiting before the next refresh
        time.sleep(5)
    
  2. Betiğinizi çalıştırın:

    python app.py
    
  3. Çıktıyı Doğrula:

    Update the `message` in your Azure App Configuration store using Azure portal or CLI.
    First, update the `message` value, and then update the `sentinel` key value.
    Hello World!
    
  4. Aşağıdaki anahtar değerlerini Azure Uygulaması Yapılandırma deposuna güncelleştirin.

    Anahtar Değer Etiket Content type
    ileti Merhaba Dünya Yenilendi! Boş bırakın Boş bırakın
    Sentinel 2 Boş bırakın Boş bırakın
  5. Değerler güncelleştirildikten sonra, yenileme aralığı geçtiğinde güncelleştirilmiş değer yazdırılır.

    Hello World Refreshed!
    

Web uygulamaları

Aşağıdaki örnekte, mevcut bir web uygulamasını yenilenebilir yapılandırma değerlerini kullanacak şekilde güncelleştirme işlemi gösterilmektedir. İşlevin on_refresh_success anahtar sözcük bağımsız değişkenine load geri çağırma sağlanabilir. Bu geri çağırma, sunucuda bir yapılandırma değişikliği algılandığında çağrılır ve uygulamadaki yapılandırma değerlerini güncelleştirmek için kullanılabilir.

içindeapp.py, yapılandırma değerlerinizi yüklemek için Azure Uygulaması Yapılandırma'yı ayarlayın. Ardından güncelleştirilmiş yapılandırma değerlerini denetlemek için uç noktalarınızı güncelleştirin.

from azure.appconfiguration.provider import load, WatchKey

azure_app_config = None  # declare azure_app_config as a global variable

def on_refresh_success():
   app.config.update(azure_app_config)


global azure_app_config
azure_app_config = load(connection_string=os.environ.get("AZURE_APPCONFIG_CONNECTION_STRING")
                        refresh_on=[WatchKey("sentinel")],
                        on_refresh_success=on_refresh_success,
                        refresh_interval=10, # Default value is 30 seconds, shortened for this sample
                    )




@app.route("/")
def index():
    global azure_app_config
    # Refresh the configuration from Azure App Configuration service.
    azure_app_config.refresh()

    # Access a configuration setting directly from within Flask configuration
    print("Request for index page received")
    context = {}
    context["message"] = app.config.get("message")
    return render_template("index.html", **context)

Şablonunuzu index.html yeni yapılandırma değerlerini kullanacak şekilde güncelleştirin.

<!doctype html>
<head>
  <title>Hello Azure App Configuration - Python Flask Example</title>
</head>
<html>

<body>
  <main>
    <div>
      <h1>{{message}}</h1>
    </div>
  </main>
</body>
</html>

Tam örnek projeyi burada bulabilirsiniz.

Bu uç noktalar tetiklendiğinde, en son yapılandırma değerlerinin kullanıldığından emin olmak için yenileme denetimi gerçekleştirilebilir. Yenileme aralığı geçirilmediyse veya yenileme devam ediyorsa denetim hemen geri dönebilir.

Yenileme tamamlandığında tüm değerler aynı anda güncelleştirilir, bu nedenle yapılandırma nesne içinde her zaman tutarlı olur.

NOT: Yenileme aralığı geçirilmediyse yenileme işlemi hemen denenmeyecek ve döndürülmeyecek.

Sonraki adımlar

Bu öğreticide, Python uygulamanızı yapılandırma ayarlarını Azure Uygulaması Yapılandırma'dan dinamik olarak yenilemek için etkinleştirdiniz. Azure Uygulaması Yapılandırmasına erişimi kolaylaştırmak için Azure yönetilen kimliğini kullanmayı öğrenmek için sonraki öğreticiye geçin.