Öğ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ı
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)
Betiğinizi çalıştırın:
python app.py
Çı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!
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 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.