Voorwaardelijke functies inschakelen met een aangepast filter in een Python-toepassing
Functievlagmen kunnen functiefilters gebruiken om functies voorwaardelijk in te schakelen. Zie Voorwaardelijke functies inschakelen met functiefilters voor meer informatie over functiefilters.
Het voorbeeld dat in deze handleiding wordt gebruikt, is gebaseerd op de Python-toepassing die is geïntroduceerd in de quickstart voor functiebeheer. Voordat u verdergaat, voltooit u de quickstart om een Python-toepassing te maken met een bètafunctievlag . Zodra dit is voltooid, moet u een aangepast functiefilter toevoegen aan de vlag Bèta-functie in uw App Configuration-archief.
In dit artikel leert u hoe u een aangepast functiefilter implementeert en het functiefilter gebruikt om functies voorwaardelijk in te schakelen.
Vereisten
Een aangepast functiefilter implementeren
U hebt een aangepast functiefilter toegevoegd met de naam Random met een parameter Percentage voor de bèta-functievlag in de vereisten. Vervolgens implementeert u het functiefilter om de vlag Bèta-functie in te schakelen op basis van de kans die is gedefinieerd door de parameter Percentage .
Voeg een
RandomFilter.py
bestand toe met de volgende code.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
U hebt een
RandomFilter
klasse toegevoegd waarmee deFeatureFilter
abstracte klasse uit deFeatureManagement
bibliotheek wordt geïmplementeerd. DeFeatureFilter
klasse heeft één methode met de naamevaluate
, die wordt aangeroepen wanneer een functievlag wordt geëvalueerd. Metevaluate
een functiefilter wordt een functievlag ingeschakeld door terug te kerentrue
.U hebt een
FeatureFilter.alias
versie ingericht omRandomFilter
uw filter een alias Random te geven, die overeenkomt met de filternaam die u hebt ingesteld in de bètafunctievlag in Azure-app Configuratie.Open het app.py-bestand en registreer het bij het
RandomFilter
maken van deFeatureManager
. Wijzig ook de code om niet automatisch te vernieuwen en om ook een paar keer toegang te krijgen tot de bètafunctievlag , zoals hieronder wordt weergegeven.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"))
Functiefilter in actie
Wanneer u de toepassing uitvoert, wordt de bètafunctievlag van Azure-app Configuration geladen door de configuratieprovider. Het resultaat van de is_enabled("Beta")
methode wordt afgedrukt naar de console. Wanneer de RandomFilter
functie wordt geïmplementeerd en gebruikt door de vlag bètafunctie , is True
het resultaat 50 procent van de tijd en False
de andere 50 procent van de tijd.
Als u de toepassing uitvoert, ziet u dat de vlag bètafunctie soms is ingeschakeld en soms niet.
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
Volgende stappen
Ga verder met de volgende documenten voor meer informatie over de ingebouwde functiefilters.