Udostępnij za pośrednictwem


Samouczek: włączanie funkcji warunkowych za pomocą filtru niestandardowego w aplikacji języka Python

Flagi funkcji mogą używać filtrów funkcji w celu warunkowego włączania funkcji. Aby dowiedzieć się więcej o filtrach funkcji, zobacz Samouczek: włączanie funkcji warunkowych z filtrami funkcji.

Przykład używany w tym samouczku jest oparty na aplikacji języka Python wprowadzonej w przewodniku Szybki start dotyczącym zarządzania funkcjami. Przed kontynuowaniem ukończ przewodnik Szybki start, aby utworzyć aplikację w języku Python z flagą funkcji beta . Po zakończeniu należy dodać niestandardowy filtr funkcji do flagi funkcji beta w magazynie App Configuration.

Z tego samouczka dowiesz się, jak zaimplementować niestandardowy filtr funkcji i użyć filtru funkcji w celu warunkowego włączenia funkcji.

Wymagania wstępne

Implementowanie niestandardowego filtru funkcji

Dodano niestandardowy filtr funkcji o nazwie Random z parametrem Procent dla flagi funkcji beta w wymaganiach wstępnych. Następnie zaimplementujesz filtr funkcji, aby włączyć flagę funkcji beta na podstawie prawdopodobieństwa zdefiniowanego przez parametr Percentage .

  1. RandomFilter.py Dodaj plik z następującym kodem.

    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
    

    Dodano klasę, która implementuje klasę RandomFilter abstrakcyjną FeatureFilter z FeatureManagement biblioteki. Klasa FeatureFilter ma jedną metodę o nazwie evaluate, która jest wywoływana za każdym razem, gdy zostanie obliczona flaga funkcji. W evaluatesystemie filtr funkcji włącza flagę funkcji, zwracając wartość true.

    Element został ozdobiony wartością FeatureFilter.alias RandomFilter , aby nadać filtrowi alias Losowy, który jest zgodny z nazwą filtru ustawioną w flagi funkcji Beta w konfiguracji aplikacja systemu Azure.

  2. Otwórz plik app.py i zarejestruj plik RandomFilter podczas tworzenia pliku FeatureManager. Ponadto zmodyfikuj kod, aby nie odświeżył się automatycznie, a także kilka razy uzyskać dostęp do flagi funkcji beta , jak pokazano poniżej.

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

Filtr funkcji w akcji

Po uruchomieniu aplikacji dostawca konfiguracji załaduje flagę funkcji Beta z aplikacja systemu Azure Configuration. Wynik is_enabled("Beta") metody zostanie wydrukowany w konsoli programu . RandomFilter Ponieważ element jest implementowany i używany przez flagę funkcji Beta, wynik będzie wynosić True 50 procent czasu i False pozostałe 50 procent czasu.

Uruchomienie aplikacji spowoduje wyświetlenie, że flaga funkcji beta jest czasami włączona, a czasami nie.

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

Następne kroki

Aby dowiedzieć się więcej na temat wbudowanych filtrów funkcji, przejdź do następujących samouczków.