在 Python 应用程序中启用使用自定义筛选器的条件功能

功能标志可以使用功能筛选器有条件地启用功能。 若要了解有关功能筛选器的详细信息,请参阅通过功能筛选器启用条件功能

本指南中使用的示例基于功能管理快速入门中介绍的 Python 应用程序。 在继续学习之前,请完成快速入门,创建具有 Beta 功能标志的 Python 应用程序。 完成后,必须将自定义功能筛选器添加到你的应用程序配置存储中的 Beta 功能标志。

本文介绍了如何实现自定义功能筛选器,并使用功能筛选器有条件地启用功能。

先决条件

实现自定义功能筛选器

你已在先决条件中添加了一个名为 Random 的自定义功能筛选器,其中包含你的 Beta 功能标志的 Percentage 参数。 接下来,实现功能筛选器,根据 Percentage 参数定义的几率启用 Beta 功能标志

  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
    

    你添加了一个从 FeatureManagement 库实现 FeatureFilter 抽象类的 RandomFilter 类。 FeatureFilter 类具有一个方法,名为 evaluate,每当评估功能标志时都会调用它。 在 evaluate 中,功能筛选器通过返回 true 来启用功能标志。

    你将 FeatureFilter.alias 装饰到 RandomFilter 上,从而给你的筛选器一个别名 Random,该别名与你在 Azure 应用程序配置中的 Beta 功能标志中设置的筛选器名称相匹配。

  2. 打开 app.py 文件,并在创建 FeatureManager 时注册 RandomFilter。 另外,修改代码以禁止自动刷新,并多次访问 Beta 功能标志,如下所示

    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 应用配置加载 Beta 功能标志is_enabled("Beta") 方法的结果将输出到控制台。 由于 Beta 功能标志实现并使用 RandomFilter,因此结果将在 50% 的情况下为 True,在另外 50% 的情况下为 False

运行应用程序时,将显示 Beta 功能标志有时启用,有时不启用

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

后续步骤

若要详细了解内置功能筛选器,请继续学习以下文档。