Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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.
- Un archivio di Configurazione app di Azure. Crea un negozio.
- Python 3.8 o versione successiva. Per informazioni su come configurare Python su Windows, consulta la documentazione Python su Windows.
Aggiungi coppie chiave-valore
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, andare a Creare un valore chiave.
| Chiave | Valore | Etichetta | Tipo contenuto |
|---|---|---|---|
| message | Salve, mondo! | Lasciare vuoto | Lasciare vuoto |
| sentinel | 1 | Lasciare vuoto | Lasciare vuoto |
Nota
Una chiave sentinel è una chiave che viene aggiornata 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:
Si usa
DefaultAzureCredentialper autenticarsi all'archivio di App Configuration. Segui le istruzioni per assegnare alla credenziale il ruolo App Configuration Data Reader. Assicurarsi di consentire tempo sufficiente per la propagazione dell'autorizzazione prima di eseguire l'applicazione.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)Esegui lo script:
python app.pyVerificare 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 Etichetta Tipo contenuto message Hello World Aggiornato! Lasciare vuoto Lasciare vuoto sentinel 2 Lasciare vuoto Lasciare vuoto Dopo che i valori sono stati aggiornati e l'intervallo di aggiornamento è passato, appare il valore aggiornato.
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, configura Configurazione app di Azure 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
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)
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ò terminare immediatamente se l'intervallo di aggiornamento non è ancora trascorso 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, non si tenta di aggiornare e il controllo torna immediatamente.
Passaggi successivi
In questa esercitazione hai abilitato la tua app Python ad aggiornare dinamicamente le impostazioni di configurazione da Configurazione app di Azure. Per scoprire come usare un'identità gestita di Azure per semplificare l'accesso ad Configurazione app di Azure, continuare con l'esercitazione successiva.