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
- Un account Azure con una sottoscrizione attiva. Crearne una gratuitamente.
- Archivio di configurazione di app Azure. Creare un archivio.
- Python 3.8 o versione successiva: per informazioni sulla configurazione di Python in Windows, vedere la documentazione di Python in Windows
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
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)
Eseguire lo script:
python app.py
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!
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 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.py
configurare 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.