Aktivera villkorsstyrda funktioner med ett anpassat filter i ett Python-program
Funktionsflaggor kan använda funktionsfilter för att aktivera funktioner villkorligt. Mer information om funktionsfilter finns i Aktivera villkorsstyrda funktioner med funktionsfilter.
Exemplet som används i den här guiden baseras på Python-programmet som introducerades i snabbstarten för funktionshantering. Innan du fortsätter slutför du snabbstarten för att skapa ett Python-program med en betafunktionsflagga . När du är klar måste du lägga till ett anpassat funktionsfilter i betafunktionsflaggan i appkonfigurationsarkivet.
I den här artikeln lär du dig hur du implementerar ett anpassat funktionsfilter och använder funktionsfiltret för att aktivera funktioner villkorligt.
Förutsättningar
- Skapa en Python-app med en funktionsflagga.
- Lägga till ett anpassat funktionsfilter i funktionsflaggan
Implementera ett anpassat funktionsfilter
Du har lagt till ett anpassat funktionsfilter med namnet Random med en procentparameter för din Beta-funktionsflagga i förutsättningarna. Sedan implementerar du funktionsfiltret för att aktivera betafunktionsflaggan baserat på den chans som definieras av parametern Procent .
Lägg till en
RandomFilter.py
fil med följande kod.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
Du har lagt till en
RandomFilter
klass som implementerar denFeatureFilter
abstrakta klassen frånFeatureManagement
biblioteket. KlassenFeatureFilter
har en enda metod med namnetevaluate
, som anropas när en funktionsflagga utvärderas. Ievaluate
aktiverar ett funktionsfilter en funktionsflagga genom atttrue
returnera .Du har dekorerat ett
FeatureFilter.alias
tillRandomFilter
för att ge filtret ett alias Slumpmässigt, vilket matchar filternamnet som du angav i funktionsflaggan Beta i Azure App Configuration.Öppna filen app.py och registrera
RandomFilter
när duFeatureManager
skapar . Ändra också koden så att den inte uppdateras automatiskt och för att även få åtkomst till betafunktionsflaggan några gånger, enligt nedan.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"))
Funktionsfilter i praktiken
När du kör programmet läser konfigurationsprovidern in betafunktionsflaggan från Azure App Configuration. Resultatet av is_enabled("Beta")
metoden skrivs ut till konsolen. RandomFilter
När den implementeras och används av betafunktionsflaggan blir True
resultatet 50 procent av tiden och False
de övriga 50 procenten av tiden.
När programmet körs visas att betafunktionsflaggan ibland är aktiverad och ibland inte.
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
Nästa steg
Om du vill veta mer om de inbyggda funktionsfiltren fortsätter du till följande dokument.