Condividi tramite


Guida introduttiva: Aggiungere flag di funzionalità a un'app Python

In questa guida introduttiva si creerà un flag di funzionalità in Configurazione app di Azure 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

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 la casella di controllo Abilita flag di funzionalità deve essere deselezionata.

Screenshot del flag di funzionalità abilitato denominato Beta.

Applicazioni console

  1. Installare Gestione funzionalità usando il comando pip install.

    pip install featuremanagement
    
  2. 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. Per altre informazioni, l'utente deve avere almeno il ruolo App Configuration Data Reader per accedere all'archivio di Configurazione app. Per altre informazioni, vedere Ruoli di Configurazione app.

  1. Impostare una variabile di ambiente denominata APP_CONFIGURATION_ENDPOINTe impostarla sull'endpoint nell'archivio di 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.

  2. Esecuzione dell'applicazione Python.

    python app.py
    
  3. Nel portale di Configurazione app selezionare Gestione funzionalità e modificare lo stato del flag di funzionalità Beta su , usando l'interruttore nella colonna Abilitato.

    Chiave State
    Versione Beta Attivato
  4. Dopo circa 30 secondi, ovvero l'intervallo di aggiornamento per il provider, l'applicazione stamperà quanto segue:

    Beta is True
    

Applicazioni Web

L'esempio seguente illustra come aggiornare un'applicazione Web esistente usando Configurazione app di Azure 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 abilitato il flag di funzionalità Beta nell'archivio di Configurazione app.

In app.py, configurare il metodo di caricamento di Configurazione app di Azure 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 messaggio Beta is enabled nella pagina, ma solo se il flag di funzionalità è abilitato nell'archivio di Configurazione app.

Screenshot dell'abilitazione del flag di funzionalità beta abilitato.

È 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.

  1. Accedere al portale di Azure e selezionare Gruppi di risorse.
  2. Nella casella Filtra per nome immettere il nome del gruppo di risorse.
  3. Nell'elenco dei risultati selezionare il nome del gruppo di risorse per visualizzare una panoramica.
  4. Selezionare Elimina gruppo di risorse.
  5. 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 di Configurazione app ed è stato usato per gestire le funzionalità in un'app Python tramite la libreria Gestione funzionalità.