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

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é.
Sentinel 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

  1. Vytvořte nový soubor Pythonu s názvem app.py a přidejte následující kód:

    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)
    
  2. Spusťte skript:

    python app.py
    
  3. 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!
    
  4. 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é.
    Sentinel 2 Nechejte prázdné. Nechejte prázdné.
  5. 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_successload 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.pyAplikace Azure Konfigurace pro načtení hodnot konfigurace. Potom aktualizujte koncové body a zkontrolujte aktualizované hodnoty konfigurace.

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)

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.