Esercitazione: Abilitare le funzionalità condizionali con un filtro personalizzato in un'applicazione Python
I flag di funzionalità possono usare filtri di funzionalità per abilitare le funzionalità in modo condizionale. Per altre informazioni sui filtri delle funzionalità, vedere Esercitazione: Abilitare le funzionalità condizionali con filtri di funzionalità.
L'esempio usato in questa esercitazione si basa sull'applicazione Python introdotta nell’avvio rapido alla gestione delle funzionalità. Prima di continuare, completare l’avvio rapido per creare un'applicazione Python con un flag di funzionalità Beta. Al termine, è necessario aggiungere un filtro di funzionalità personalizzato al flag di funzionalità Beta nell'archivio di configurazione app.
In questa esercitazione si apprenderà a implementare un filtro di funzionalità personalizzato e usare il filtro delle funzionalità per abilitare le funzionalità in modo condizionale.
Prerequisiti
- Creare un'app Python con un flag di funzionalità.
- Aggiungere un filtro di funzionalità personalizzato al flag di funzionalità
Implementare un filtro di funzionalità personalizzato
È stato aggiunto un filtro di funzionalità personalizzato denominato Casuale con un parametro Percentuale per il flag di funzionalità Beta nei prerequisiti. Successivamente, si implementa il filtro delle funzionalità per abilitare il flag di funzionalità Beta in base alla probabilità definita dal parametro Percentuale.
Aggiungere un file
RandomFilter.py
con il codice seguente.import random from featuremanagement import FeatureFilter @FeatureFilter.alias("Random") class RandomFilter(FeatureFilter): def evaluate(self, context, **kwargs): value = context.get("parameters", {}).get("Value", 0) if value < random.randint(0, 100): return True return False
È stata aggiunta una classe
RandomFilter
che implementa la classe astrattaFeatureFilter
dalla libreriaFeatureManagement
. La classeFeatureFilter
ha un singolo metodo denominatoevaluate
, che viene chiamato ogni volta che viene valutato un flag di funzionalità. Inevaluate
, un filtro di funzionalità abilita un flag di funzionalità restituendotrue
.È stato decorato un
FeatureFilter.alias
inRandomFilter
per assegnare al filtro un alias Casuale, che corrisponde al nome del filtro impostato nel flag di funzionalità Beta in Configurazione app di Azure.Aprire il file app.py e registrare
RandomFilter
durante la creazione diFeatureManager
. Inoltre, modificare il codice per non aggiornare automaticamente e per accedere anche al flag di funzionalità Beta alcune volte, come illustrato di seguito.from featuremanagement import FeatureManager from azure.appconfiguration.provider import load from azure.identity import DefaultAzureCredential import os endpoint = os.environ.get("APPCONFIGURATION_ENDPOINT_STRING") # Connect to Azure App Configuration using and Endpoint and Azure Entra ID # 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=DefaultAzureCredential(), feature_flag_enabled=True) feature_manager = FeatureManager(config, feature_filters=[RandomFilter()]) for i in range(0, 10): print("Beta is", feature_manager.is_enabled("Beta"))
Filtro funzionalità in azione
Quando si esegue l'applicazione, il provider di configurazione caricherà il flag di funzionalità Beta da Configurazione app di Azure. Il risultato del metodo is_enabled("Beta")
verrà stampato nella console. Poiché RandomFilter
viene implementato e usato dal flag di funzionalità Beta, il risultato sarà True
il 50% del tempo e False
l'altro 50% del tempo.
L'esecuzione dell'applicazione mostrerà che il flag di funzionalità Beta è talvolta abilitato e talvolta no.
Beta is True
Beta is False
Beta is True
Beta is True
Beta is True
Beta is False
Beta is False
Beta is False
Beta is True
Beta is True
Passaggi successivi
Per altre informazioni sui filtri di funzionalità predefiniti, continuare con le esercitazioni seguenti.