Esercitazione: Usare la configurazione dinamica in Python

Il provider Python di configurazione app Azure include funzionalità predefinite di memorizzazione nella cache e aggiornamento. Questa esercitazione illustra come abilitare la configurazione dinamica nelle applicazioni Python.

Prerequisiti

Aggiungere valori chiave

Aggiungere il valore chiave seguente all'archivio di configurazione app Azure. Per altre informazioni su come aggiungere valori chiave a un archivio usando il portale di Azure o l'interfaccia della riga di comando, vedere Creare un valore chiave.

Chiave valore Label Content type
message Salve, mondo! Lasciare vuoto Lasciare vuoto
sentinel 1 Lasciare vuoto Lasciare vuoto

Nota

Una chiave sentinel è una chiave che si aggiorna dopo aver completato la modifica di tutte le altre chiavi. L'app monitora la chiave sentinel. Quando viene rilevata una modifica, l'app aggiorna tutti i valori di configurazione. Questo approccio consente di garantire la coerenza della configurazione nell'app e riduce il numero complessivo di richieste effettuate all'archivio di configurazione app Azure, rispetto al monitoraggio di tutte le chiavi per le modifiche.

Applicazioni console

  1. Creare un nuovo file Python denominato app.py e aggiungere il codice seguente:

    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. Eseguire lo script:

    python app.py
    
  3. Verificare l'output:

    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. Aggiornare i valori chiave seguenti all'archivio di configurazione app Azure.

    Chiave valore Label Content type
    message Hello World Aggiornato! Lasciare vuoto Lasciare vuoto
    sentinel 2 Lasciare vuoto Lasciare vuoto
  5. Dopo aver aggiornato i valori, il valore aggiornato verrà stampato al termine dell'intervallo di aggiornamento.

    Hello World Refreshed!
    

Applicazioni Web

L'esempio seguente illustra come aggiornare un'applicazione Web esistente per usare i valori di configurazione aggiornabili. È possibile fornire un callback all'argomento on_refresh_success parola chiave della load funzione. Questo callback verrà richiamato quando viene rilevata una modifica di configurazione nel server e può essere usato per aggiornare i valori di configurazione nell'applicazione.

In app.pyconfigurare app Azure Configurazione per caricare i valori di configurazione. Aggiornare quindi gli endpoint per verificare la presenza di valori di configurazione aggiornati.

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)

Aggiornare il modello index.html per usare i nuovi valori di configurazione.

<!doctype html>
<head>
  <title>Hello Azure App Configuration - Python Flask Example</title>
</head>
<html>

<body>
  <main>
    <div>
      <h1>{{message}}</h1>
    </div>
  </main>
</body>
</html>

È possibile trovare un progetto di esempio completo qui.

Ogni volta che questi endpoint vengono attivati, è possibile eseguire un controllo di aggiornamento per assicurarsi che vengano usati i valori di configurazione più recenti. Il controllo può restituire immediatamente se l'intervallo di aggiornamento non è passato o se è già in corso un aggiornamento.

Quando un aggiornamento viene completato, tutti i valori vengono aggiornati contemporaneamente, quindi la configurazione è sempre coerente all'interno dell'oggetto .

NOTA: se l'intervallo di aggiornamento non è passato, l'aggiornamento non verrà tentato e restituito immediatamente.

Passaggi successivi

In questa esercitazione è stato abilitato l'app Python per aggiornare dinamicamente le impostazioni di configurazione da app Azure Configurazione. Per informazioni su come usare un'identità gestita di Azure per semplificare l'accesso a app Azure Configurazione, passare all'esercitazione successiva.