Поделиться через


Руководство. Включение условных функций с помощью пользовательского фильтра в приложении Python

Флаги компонентов могут использовать фильтры компонентов для условного включения функций. Дополнительные сведения о фильтрах функций см. в руководстве по включению условных функций с помощью фильтров компонентов.

Пример, используемый в этом руководстве, основан на приложении Python, представленном в кратком руководстве по управлению функциями. Прежде чем продолжить, выполните краткое руководство по созданию приложения Python с флагом бета-функции . После завершения необходимо добавить пользовательский фильтр компонентов в флаг бета-функции в хранилище Конфигурация приложений.

В этом руководстве вы узнаете, как реализовать пользовательский фильтр компонентов и использовать фильтр компонентов для условного включения функций.

Необходимые компоненты

Реализация настраиваемого фильтра компонентов

Вы добавили пользовательский фильтр функций с именем Random с параметром "Процент" для флага бета-функции в предварительных требованиях. Затем вы реализуете фильтр компонентов, чтобы включить флаг бета-функции на основе вероятности, определенной параметром Percentage .

  1. RandomFilter.py Добавьте файл со следующим кодом.

    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
    

    Вы добавили класс, реализующий абстрактный RandomFilter класс из библиотекиFeatureManagement.FeatureFilter Класс FeatureFilter имеет один метод с именем evaluate, который вызывается при оценке флага компонента. В evaluateфильтре функций флаг компонента включается возвращаемый trueфлаг компонента.

    Вы декорировали фильтр FeatureFilter.alias RandomFilter, чтобы дать фильтру псевдоним Случайный, который соответствует имени фильтра, заданному в флаге бета-функции в Конфигурация приложений Azure.

  2. Откройте файл app.py и зарегистрируйте RandomFilter его при созданииFeatureManager. Кроме того, измените код, чтобы не обновляться автоматически, а также получать доступ к флагу бета-функции несколько раз, как показано ниже.

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

Фильтр компонентов в действии

При запуске приложения поставщик конфигурации загрузит флаг бета-функции из Конфигурация приложений Azure. Результат is_enabled("Beta") метода будет напечатан в консоли. RandomFilter По мере реализации и использования флагом бета-функции результат будет составлять True 50 процентов времени, а False остальные 50 процентов времени.

При запуске приложения показано, что флаг бета-функции иногда включен, а иногда и нет.

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

Следующие шаги

Дополнительные сведения о встроенных фильтрах функций см. в следующих руководствах.