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 finden Sie unter Aktivieren von bedingten Features mit Featurefiltern.
Das in diesem Leitfaden 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 Artikel erfahren Sie, wie Sie einen benutzerdefinierten Featurefilter implementieren und verwenden, um Features bedingt zu aktivieren.
Voraussetzungen
- Erstellen Sie eine Python-App mit einem Featureflag.
- Hinzufügen eines benutzerdefinierten Featurefilters zum Featureflag
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.
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 abstrakteFeatureFilter
-Klasse aus derFeatureManagement
-Bibliothek implementiert. DieFeatureFilter
-Klasse verfügt über eine einzelne Methode namensevaluate
, die immer dann aufgerufen wird, wenn ein Featureflag ausgewertet wird. Inevaluate
aktiviert ein Featurefilter ein Featureflag, indemtrue
zurückgegeben wird.Sie haben dem
RandomFilter
einFeatureFilter.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.Öffnen Sie die Datei app.py, und registrieren Sie
RandomFilter
beim Erstellen vonFeatureManager
. Ä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 Dokumenten fort.