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 Ihrem Azure App Configuration-Konfigurationsspeicher das folgende Schlüssel-Wert-Paar hinzu. Weitere Informationen dazu, wie Sie einem Speicher mithilfe des Azure-Portal oder der CLI Schlüssel-Werte hinzufügen, finden Sie unter Erstellen eines Schlüssel-Werts.

Schlüssel Wert Bezeichnung Inhaltstyp
Nachricht Hallo Welt! 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, genügend Zeit einzuplanen, damit sich die Berechtigung propagieren kann, 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 Sie die 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 neu aufgelegt! Leer lassen Leer lassen
    sentinel 2 Leer lassen Leer lassen
  5. Nachdem die Werte aktualisiert wurden und das Bildwiederholintervall vorbei ist, erscheint der aktualisierte Wert.

    Hello World Refreshed!
    

Webanwendungen

Das folgende Beispiel zeigt, wie eine vorhandene Webanwendung aktualisiert wird, um aktualisierbare Konfigurationswerte zu verwenden. Eine Callback-Funktion kann an das on_refresh_success-Schlüsselwortargument der load-Funktion übergeben 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 noch nicht verstrichen ist, wird keine Aktualisierung versucht, und die Prüfung wird sofort beendet.

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.