Teilen über


Tutorial: Aktivieren bedingter Features mit einem benutzerdefinierten Filter in einer Python-Anwendung

Featureflags können Featurefilter verwenden, um Features bedingt zu aktivieren. Weitere Informationen zu Featurefiltern erhalten Sie im Tutorial: Aktivieren von bedingten Features mit Featurefiltern.

Das in diesem Tutorial verwendete Beispiel basiert auf der Python-Anwendung, die im Schnellstart zur Featureverwaltung eingeführt wurde. Bevor Sie fortfahren, führen Sie die Schnellstartanleitung aus, um eine Python-Anwendung mit einem Featureflag namens Beta zu erstellen. Nach Abschluss müssen Sie dem Beta-Featureflag in Ihrem App Configuration-Speicher einen benutzerdefinierten Featurefilter hinzufügen.

In diesem Tutorial erfahren Sie, wie Sie einen benutzerdefinierten Featurefilter implementieren und den Featurefilter verwenden, um Features bedingt zu aktivieren.

Voraussetzungen

Implementieren eines benutzerdefinierten Featurefilters

Sie haben einen benutzerdefinierten Featurefilter namens Random mit einem Percentage-Parameter für Ihr Beta-Featureflag in den Voraussetzungen hinzugefügt. Als Nächstes implementieren Sie den Featurefilter, um das Beta-Featureflag basierend auf der durch den Percentage-Parameter definierten Chance zu aktivieren.

  1. Fügen Sie eine Datei RandomFilter.py mit dem folgenden Code hinzu.

    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
    

    Sie haben eine RandomFilter-Klasse hinzugefügt, die die abstrakte FeatureFilter-Klasse aus der FeatureManagement-Bibliothek implementiert. Die FeatureFilter-Klasse verfügt über eine einzelne Methode namens evaluate, die immer dann aufgerufen wird, wenn ein Featureflag ausgewertet wird. In evaluate aktiviert ein Featurefilter ein Featureflag, indem true zurückgegeben wird.

    Sie haben dem RandomFilter ein FeatureFilter.alias hinzugefügt, um Ihrem Filter einen Alias Random zuzuweisen, der dem Filternamen entspricht, den Sie im Beta-Featureflag in Azure App Configuration festgelegt haben.

  2. Öffnen Sie die Datei app.py, und registrieren Sie RandomFilter beim Erstellen von FeatureManager. Ändern Sie außerdem den Code so, dass er nicht automatisch aktualisiert wird und auch einige Male auf das Featureflag Beta zugreift, wie unten dargestellt.

    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"))
    

Featurefilter in Aktion

Wenn Sie die Anwendung ausführen, lädt der Konfigurationsanbieter das Featureflag Beta aus Azure App Configuration. Das Ergebnis der is_enabled("Beta")-Methode wird in der Konsole ausgegeben. Wenn RandomFilter implementiert und vom Featureflag Beta verwendet wird, ist das Ergebnis 50 Prozent der Zeit True und die anderen 50 Prozent der Zeit False.

Bei der Ausführung der Anwendung sehen Sie, dass das Featureflag Beta manchmal aktiviert ist und manchmal nicht.

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ächste Schritte

Wenn Sie mehr über die eingebauten Featurefilter erfahren möchten, fahren Sie mit den folgenden Tutorials fort.