Kurz: Použití dynamické konfigurace v Pythonu
Poskytovatel pythonu konfigurace Aplikace Azure zahrnuje integrované možnosti ukládání do mezipaměti a aktualizace. V tomto kurzu se dozvíte, jak povolit dynamickou konfiguraci v aplikacích Pythonu.
Požadavky
- Účet Azure s aktivním předplatným. Vytvořte si ho zdarma.
- Úložiště konfigurace Aplikace Azure. Vytvořte úložiště.
- Python 3.8 nebo novější – informace o nastavení Pythonu ve Windows najdete v dokumentaci k Pythonu ve Windows.
Přidání hodnot klíče
Do úložiště konfigurace Aplikace Azure přidejte následující hodnotu klíče. Další informace o tom, jak přidat hodnoty klíčů do úložiště pomocí webu Azure Portal nebo rozhraní příkazového řádku, najdete v tématu Vytvoření hodnoty klíče.
Key | Hodnota | Popisek | Typ obsahu |
---|---|---|---|
message | Ahoj světe! | Nechejte prázdné. | Nechejte prázdné. |
hlídka | 1 | Nechejte prázdné. | Nechejte prázdné. |
Poznámka:
Klíč sentinelu je klíč, který aktualizujete po dokončení změny všech ostatních klíčů. Vaše aplikace monitoruje klíč sentinelu. Když se zjistí změna, aplikace aktualizuje všechny konfigurační hodnoty. Tento přístup pomáhá zajistit konzistenci konfigurace v aplikaci a snižuje celkový počet požadavků provedených v úložišti konfigurace Aplikace Azure v porovnání s monitorováním všech klíčů pro změny.
Konzolové aplikace
Vytvořte nový soubor Pythonu s názvem app.py a přidejte následující kód:
Použijete
DefaultAzureCredential
k ověření ve službě App Configuration Store. Postupujte podle pokynů a přiřaďte své přihlašovací údaje roli Čtenář dat konfigurace aplikace. Před spuštěním aplikace nezapomeňte povolit dostatek času, než se oprávnění rozšíří.from azure.appconfiguration.provider import load, WatchKey from azure.identity import DefaultAzureCredential import os import time endpoint = os.environ.get("APPCONFIGURATION_ENDPOINT") # Connecting to Azure App Configuration using connection string # Setting up to refresh when the Sentinel key is changed. config = load( endpoint=endpoint, credential=DefaultAzureCredential(), 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)
Spusťte skript:
python app.py
Ověřit výstup:
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!
Aktualizujte následující hodnoty klíče do úložiště konfigurace Aplikace Azure.
Key Hodnota Popisek Typ obsahu message Hello World Refreshed! Nechejte prázdné. Nechejte prázdné. hlídka 2 Nechejte prázdné. Nechejte prázdné. Po aktualizaci hodnot se aktualizovaná hodnota vytiskne po uplynutí intervalu aktualizace.
Hello World Refreshed!
Webové aplikace
Následující příklad ukazuje, jak aktualizovat existující webovou aplikaci tak, aby používala aktualizovatelné konfigurační hodnoty. Zpětné volání lze zadat do argumentu on_refresh_success
load
klíčového slova funkce. Toto zpětné volání se vyvolá při zjištění změny konfigurace na serveru a dá se použít k aktualizaci konfiguračních hodnot v aplikaci.
Nastavte app.py
Aplikace Azure Konfigurace pro načtení hodnot konfigurace. Potom aktualizujte koncové body a zkontrolujte aktualizované hodnoty konfigurace.
from azure.appconfiguration.provider import load, WatchKey
from azure.identity import DefaultAzureCredential
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(endpoint=os.environ.get("AZURE_APPCONFIG_ENDPOINT"),
credential=DefaultAzureCredential(),
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)
Aktualizujte šablonu index.html
tak, aby používala nové hodnoty konfigurace.
<!doctype html>
<head>
<title>Hello Azure App Configuration - Python Flask Example</title>
</head>
<html>
<body>
<main>
<div>
<h1>{{message}}</h1>
</div>
</main>
</body>
</html>
Úplný ukázkový projekt najdete tady.
Kdykoli se tyto koncové body aktivují, můžete provést kontrolu aktualizace, aby se zajistilo, že se použijí nejnovější hodnoty konfigurace. Tato kontrola se může vrátit okamžitě, pokud se interval aktualizace nepředá nebo už probíhá aktualizace.
Po dokončení aktualizace se aktualizují všechny hodnoty najednou, takže konfigurace je vždy konzistentní v rámci objektu.
POZNÁMKA: Pokud se interval aktualizace nepředá, aktualizace se nepokusí a vrátí se hned.
Další kroky
V tomto kurzu jste povolili aplikaci Python, aby dynamicky aktualizovala nastavení konfigurace z Aplikace Azure Konfigurace. Pokud chcete zjistit, jak pomocí spravované identity Azure zjednodušit přístup ke konfiguraci Aplikace Azure, pokračujte dalším kurzem.