Freigeben über


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

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

  1. 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)
    
  2. Führen Sie Ihr Skript aus:

    python app.py
    
  3. Ü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!
    
  4. 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
  5. 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.