Tutorial: Verwenden der dynamischen Konfiguration in Python
Der Azure App Configuration-Anbieter für Python enthält integrierte Funktionen für Zwischenspeicherung und Aktualisierung. In diesem Tutorial wird gezeigt, wie Sie die dynamische Konfiguration in Python-Anwendungen aktivieren.
Voraussetzungen
- Ein Azure-Konto mit einem aktiven Abonnement. Erstellen Sie ein kostenloses Konto.
- Ein Azure App Configuration-Speicher. Erstellen Sie einen Speicher.
- Python 3.8 oder höher: Informationen zum Einrichten von Python unter Windows finden Sie in der Dokumentation zu Python unter Windows.
Schlüsselwerte hinzufügen
Fügen Sie dem Azure App Configuration-Speicher die folgenden Schlüssel-Wert-Paare hinzu. Weitere Informationen zum Hinzufügen von Schlüssel-Wert-Paaren zu einem Speicher mithilfe des Azure-Portals oder der CLI finden Sie unter Erstellen eines Schlüssel-Wert-Paars.
Schlüssel | Wert | Bezeichnung | Inhaltstyp |
---|---|---|---|
Nachricht | Hello World! | Leer lassen | Leer lassen |
sentinel | 1 | Leer lassen | Leer lassen |
Hinweis
Ein Sentinel-Schlüssel ist ein Schlüssel, den Sie aktualisieren, nachdem Sie die Änderung aller anderen Schlüssel abgeschlossen haben. Ihre App überwacht den Sentinel-Schlüssel. Wird eine Änderung erkannt, werden alle Konfigurationswerte von Ihrer App aktualisiert. Dieser Ansatz trägt dazu bei, die Konsistenz der Konfiguration in Ihrer App sicherzustellen, und verringert die Gesamtanzahl von Anforderungen, die an den Azure App Configuration-Speicher gesendet werden (verglichen mit der Überwachung aller Schlüssel auf Änderungen).
Konsolenanwendungen
Erstellen Sie eine neue Python-Datei mit dem Namen app.py, und fügen Sie den folgenden Code hinzu:
Sie verwenden die
DefaultAzureCredential
für die Authentifizierung beim App Configuration-Speicher. Befolgen Sie die Anweisungen, um Ihre Anmeldeinformationen der Rolle App Configuration-Datenleser zuzuweisen. Achten Sie darauf, ausreichend Zeit für die Verteilung der Berechtigung zu warten, bevor Sie Ihre Anwendung ausführen.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)
Führen Sie Ihr Skript aus:
python app.py
Überprüfen der Ausgabe:
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!
Aktualisieren Sie die folgenden Schlüsselwerte im Azure App Configuration-Speicher.
Schlüssel Wert Bezeichnung Inhaltstyp Nachricht Hallo Welt wurde aktualisiert! Leer lassen Leer lassen sentinel 2 Leer lassen Leer lassen Nach der Aktualisierung der Werte wird der aktualisierte Wert ausgegeben, wenn das Aktualisierungsintervall verstrichen ist.
Hello World Refreshed!
Webanwendungen
Das folgende Beispiel zeigt, wie eine vorhandene Webanwendung aktualisiert wird, um aktualisierbare Konfigurationswerte zu verwenden. Ein Rückruf kann für das on_refresh_success
-Schlüsselwortargument der load
-Funktion bereitgestellt werden. Dieser Rückruf wird aufgerufen, wenn eine Konfigurationsänderung auf dem Server erkannt wird und zum Aktualisieren der Konfigurationswerte in der Anwendung verwendet werden kann.
Richten Sie Azure App Configuration in app.py
ein, um Ihre Konfigurationswerte zu laden. Aktualisieren Sie dann Ihre Endpunkte, um nach aktualisierten Konfigurationswerten zu suchen.
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)
Aktualisieren Sie die Vorlage index.html
, um die neuen Konfigurationswerte zu verwenden.
<!doctype html>
<head>
<title>Hello Azure App Configuration - Python Flask Example</title>
</head>
<html>
<body>
<main>
<div>
<h1>{{message}}</h1>
</div>
</main>
</body>
</html>
Ein vollständiges Beispielprojekt finden Sie hier.
Wenn diese Endpunkte ausgelöst werden, kann eine Aktualisierungsprüfung durchgeführt werden, um sicherzustellen, dass die neuesten Konfigurationswerte verwendet werden. Die Überprüfung kann sofort Werte zurückgeben, wenn das Aktualisierungsintervall nicht verstrichen ist oder bereits eine Aktualisierung ausgeführt wird.
Wenn eine Aktualisierung abgeschlossen ist, werden alle Werte gleichzeitig aktualisiert, sodass die Konfiguration innerhalb des Objekts immer konsistent ist.
HINWEIS: Wenn das Aktualisierungsintervall nicht verstrichen ist, wird die Aktualisierung nicht versucht, und es werden sofort Werte zurückgegeben.
Nächste Schritte
In diesem Tutorial haben Sie Ihre Python-App aktiviert, um Konfigurationseinstellungen dynamisch aus Azure App Configuration zu aktualisieren. Fahren Sie mit dem nächsten Tutorial fort, um zu erfahren, wie Sie eine von Azure verwaltete Identität hinzufügen, um den Zugriff auf Azure App Configuration zu optimieren.