Guida introduttiva: Aggiungere flag di funzionalità a un'app Python
In questa guida introduttiva si creerà un flag di funzionalità in app Azure Configurazione e lo si userà per controllare in modo dinamico le app Python per creare un'implementazione end-to-end della gestione delle funzionalità.
Il supporto per la gestione delle funzionalità estende la funzionalità di configurazione dinamica a Configurazione app. Questi esempi nella compilazione di avvio rapido sull'app Python introdotta nell'esercitazione sulla configurazione dinamica. Prima di continuare, completare la guida introduttiva e l'esercitazione per creare app Python con la configurazione dinamica.
Questa libreria non ha una dipendenza da alcuna libreria di Azure. Si integrano perfettamente con Configurazione app tramite il provider di configurazione Python.
Prerequisiti
- Un account Azure con una sottoscrizione attiva. Crearne una gratuitamente.
- Un Archivio di configurazione app. Creare un archivio.
- Python 3.8 o versione successiva: per informazioni sulla configurazione di Python in Windows, vedere la documentazione di Python in Windows. In caso contrario, vedere i download di Python.
- azure-appconfiguration-provider library 1.2.0 o versione successiva.
Aggiungere un flag di funzionalità
Aggiungere un flag di funzionalità chiamato Beta all’archivio di Configurazione app e lasciare Etichetta e Descrizione con i relativi valori predefiniti. Per altre informazioni su come aggiungere flag di funzionalità a un archivio usando il portale di Azure o l’interfaccia della riga di comando, vedere Creare un flag di funzionalità. In questa fase il bock di controllo Abilita flag di funzionalità deve essere deselezionato.
Applicazioni console
Installare Gestione funzionalità usando il
pip install
comando .pip install featuremanagement
Creare un nuovo file Python denominato
app.py
e aggiungere il codice seguente:from featuremanagement import FeatureManager from azure.identity import InteractiveBrowserCredential from azure.appconfiguration.provider import load import os from time import sleep endpoint = os.environ["APP_CONFIGURATION_ENDPOINT"] # Connecting to Azure App Configuration using an endpoint # credential is used to authenticate the client, the InteractiveBrowserCredential is used for this sample. It will open a browser window to authenticate the user. For all credential options see [credential classes](https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/identity/azure-identity#credential-classes). # feature_flag_enabled makes it so that the provider will load feature flags from Azure App Configuration # feature_flag_refresh_enabled makes it so that the provider will refresh feature flags from Azure App Configuration, when the refresh operation is triggered config = load(endpoint=endpoint, credential=InteractiveBrowserCredential(), feature_flag_enabled=True, feature_flag_refresh_enabled=True) feature_manager = FeatureManager(config) # Is always false print("Beta is ", feature_manager.is_enabled("Beta")) while not feature_manager.is_enabled("Beta"): sleep(5) config.refresh() print("Beta is ", feature_manager.is_enabled("Beta"))
Quando si avvia l'applicazione, verrà aperta una finestra del browser per autenticare l'utente. L'utente deve avere almeno il App Configuration Data Reader
ruolo per accedere all'archivio Configurazione app, vedere Configurazione app ruoli per altre informazioni.
Impostare una variabile di ambiente denominata APP_CONFIGURATION_ENDPOINT e impostarla sull'endpoint sull'archivio Configurazione app. Al prompt dei comandi eseguire questo comando e riavviare il prompt per rendere effettiva la modifica:
Per compilare ed eseguire l'app in locale usando il prompt dei comandi di Windows, eseguire il comando seguente:
setx APP_CONFIGURATION_ENDPOINT "endpoint-of-your-app-configuration-store"
Riavviare il prompt dei comandi per rendere effettiva la modifica. Verificare che sia impostato correttamente stampando il valore della variabile di ambiente.
Eseguire l'applicazione Python.
python app.py
Nel portale di Configurazione app selezionare Gestione funzionalità e modificare lo stato del flag di funzionalità Beta su Sì, usando l'interruttore nella colonna Abilitato.
Chiave Provincia Beta Attivato Dopo circa 30 anni, ovvero l'intervallo di aggiornamento per il provider, l'applicazione stamperà quanto segue:
Beta is True
Applicazioni Web
Nell'esempio seguente viene illustrato come aggiornare un'applicazione Web esistente usando app Azure Configuration con aggiornamento dinamico per usare anche i flag di funzionalità. Per un esempio più dettagliato di come usare l'aggiornamento dinamico per i valori di configurazione, vedere Configurazione dinamica python. Prima di continuare, assicurarsi di avere il flag di funzionalità Beta abilitato nell'archivio Configurazione app.
In app.py
configurare app Azure metodo di caricamento della configurazione per caricare anche i flag di funzionalità, insieme all'abilitazione dell'aggiornamento dei flag di funzionalità.
from featuremanagement import FeatureManager
...
global azure_app_config, feature_manager
# Connecting to Azure App Configuration using an endpoint
# credential is used to authenticate the client, the InteractiveBrowserCredential is used for this sample. It will open a browser window to authenticate the user. For all credential options see [credential classes](https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/identity/azure-identity#credential-classes).
# feature_flag_enabled makes it so that the provider will load feature flags from Azure App Configuration
# feature_flag_refresh_enabled makes it so that the provider will refresh feature flags from Azure App Configuration, when the refresh operation is triggered
azure_app_config = load(endpoint=endpoint, credential=InteractiveBrowserCredential(),
refresh_on=[WatchKey("sentinel")],
on_refresh_success=on_refresh_success,
refresh_interval=10, # Default value is 30 seconds, shortened for this sample
feature_flag_enabled=True,
feature_flag_refresh_enabled=True,
)
feature_manager = FeatureManager(config)
Aggiornare anche le route per verificare la presenza di flag di funzionalità aggiornati.
@app.route("/")
def index():
...
context["message"] = azure_app_config.get("message")
context["beta"] = feature_manager.is_enabled("Beta")
...
Aggiornare il modello index.html
per usare i nuovi flag di funzionalità.
...
<body>
<main>
<div>
<h1>{{message}}</h1>
{% if beta %}
<h2>Beta is enabled</h2>
{% endif %}
</div>
</main>
</body>
Dopo aver aggiornato ed eseguito l'applicazione, è possibile visualizzare il flag di funzionalità in azione, in cui verrà visualizzato il Beta is enabled
messaggio nella pagina, ma solo se il flag di funzionalità è abilitato nell'archivio Configurazione app.
È 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 è ancora passato o un aggiornamento è già in corso.
Quando un aggiornamento viene completato, tutti i valori vengono aggiornati contemporaneamente, quindi la configurazione è sempre coerente all'interno dell'oggetto .
Pulire le risorse
Se non si vuole continuare a usare le risorse create in questo articolo, eliminare il gruppo di risorse creato qui per evitare addebiti.
Importante
L'eliminazione di un gruppo di risorse è irreversibile. Il gruppo di risorse e tutte le risorse in esso contenute vengono eliminati in modo permanente. Assicurarsi di non eliminare accidentalmente il gruppo di risorse o le risorse sbagliate. Se le risorse per questo articolo sono state create in un gruppo di risorse che contiene altre risorse che si vogliono mantenere, eliminare ogni risorsa singolarmente dal rispettivo riquadro anziché eliminare il gruppo di risorse.
- Accedere al portale di Azure e selezionare Gruppi di risorse.
- Nella casella Filtra per nome immettere il nome del gruppo di risorse.
- Nell'elenco dei risultati selezionare il nome del gruppo di risorse per visualizzare una panoramica.
- Selezionare Elimina gruppo di risorse.
- Verrà chiesto di confermare l'eliminazione del gruppo di risorse. Immettere il nome del gruppo di risorse per confermare e selezionare Elimina.
Dopo qualche istante, il gruppo di risorse e tutte le risorse che contiene vengono eliminati.
Passaggi successivi
In questo argomento di avvio rapido è stato creato un nuovo archivio Configurazione app e usato per gestire le funzionalità in un'app Python tramite la libreria Gestione funzionalità.
- Altre informazioni sulla gestione delle funzionalità.
- Gestire i flag di funzionalità.