共用方式為


在 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") 方法的結果將會列印至主控台。 由於 RandomFilter 是由 Beta 功能旗標實作及使用,因此結果將有 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

下一步

若要深入瞭解內建功能篩選器,請繼續進行下列檔。