Delen via


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 .

  1. 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 de FeatureFilter abstracte klasse uit de FeatureManagement bibliotheek wordt geïmplementeerd. De FeatureFilter klasse heeft één methode met de naam evaluate, die wordt aangeroepen wanneer een functievlag wordt geëvalueerd. Met evaluateeen functiefilter wordt een functievlag ingeschakeld door terug te keren true.

    U hebt een FeatureFilter.alias versie ingericht om RandomFilter uw filter een alias Random te geven, die overeenkomt met de filternaam die u hebt ingesteld in de bètafunctievlag in Azure-app Configuratie.

  2. Open het app.py-bestand en registreer het bij het RandomFilter maken van de FeatureManager. 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.