Включение условных функций с помощью пользовательского фильтра в приложении Python
Флаги компонентов могут использовать фильтры компонентов для условного включения функций. Дополнительные сведения о фильтрах функций см. в статье "Включение условных функций" с помощью фильтров компонентов.
Пример, используемый в этом руководстве, основан на приложении Python, представленном в кратком руководстве по управлению функциями. Прежде чем продолжить, выполните краткое руководство по созданию приложения Python с флагом бета-функции . После завершения необходимо добавить пользовательский фильтр компонентов в флаг бета-функции в хранилище Конфигурация приложений.
Из этой статьи вы узнаете, как реализовать пользовательский фильтр функций и использовать фильтр компонентов для условного включения функций.
Необходимые компоненты
- Создайте приложение Python с флагом компонента.
- Добавление настраиваемого фильтра компонентов в флаг компонента
Реализация настраиваемого фильтра компонентов
Вы добавили пользовательский фильтр функций с именем Random с параметром "Процент" для флага бета-функции в предварительных требованиях. Затем вы реализуете фильтр компонентов, чтобы включить флаг бета-функции на основе вероятности, определенной параметром Percentage .
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.Откройте файл 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
Следующие шаги
Дополнительные сведения о встроенных фильтрах функций см. в следующих документах.