在 Python 應用程式中使用自訂篩選來啟用條件式功能
功能旗標可以使用功能篩選有條件地啟用功能。 若要深入瞭解功能篩選,請參閱 使用功能篩選器啟用條件式功能。
本指南中使用的範例是以功能管理 快速入門中引進的 Python 應用程式為基礎。 繼續進行之前,請先完成快速入門,以使用 Beta 功能旗標來建立 Python 應用程式。 完成後,您必須將自訂功能篩選新增至應用程式組態存放區中的 Beta 功能旗標。
在本文中,您將瞭解如何實作自定義功能篩選,並使用功能篩選條件來有條件地啟用功能。
必要條件
實作自訂功能篩選
您已新增名為 Random 的自訂功能篩選,其在必要條件中包含 Beta 功能旗標的 Percentage 參數。 接下來,您會實作功能篩選,以根據 Percentage 參數所定義的機率來啟用 Beta 功能旗標。
使用下列程式碼來新增
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 功能旗標中設定的篩選名稱。開啟 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
下一步
若要深入瞭解內建功能篩選器,請繼續進行下列檔。