Tutorial: Habilitar características condicionales con un filtro personalizado en una aplicación de Python

Las marcas de características pueden usar filtros de características para habilitarlas de forma condicional. Para obtener más información sobre los filtros de características, consulte Tutorial: Habilitación de características condicionales con filtros de características.

El ejemplo usado en este tutorial se basa en la aplicación de Python introducida en la administración de características inicio rápido. Antes de seguir adelante, complete el inicio rápido para crear una aplicación Python con una marca de característica Beta. Una vez completado, debe agregar un filtro de características personalizado a la marca de característica beta en el almacén de App Configuration.

En este tutorial, aprenderá a implementar un filtro de características personalizado y a usar el filtro de características para habilitarlas de forma condicional.

Requisitos previos

Implementación de un filtro de características personalizado

Ha agregado un filtro de características personalizado denominado Aleatorio con un parámetro de porcentaje para la marca de característica beta en los requisitos previos. A continuación, se implementa el filtro de características para habilitar el indicador de características Beta en función de la probabilidad definida por el parámetro Porcentaje.

  1. Agregue un archivo RandomFilter.py con el código siguiente.

    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
    

    Ha agregado una clase RandomFilter que implementa la clase abstracta FeatureFilter de la biblioteca FeatureManagement. La clase FeatureFilter tiene un único método denominado evaluate, al que se llama cada vez que se evalúa una marca de característica. En evaluate, un filtro de características habilita una marca de característica devolviendo true.

    Ha decorado un FeatureFilter.alias en el RandomFilter para proporcionar al filtro un alias Random, que coincide con el nombre de filtro que estableció en la marca de característica beta en Azure App Configuration.

  2. Abra el archivo app.py y registre el RandomFilter al crear FeatureManager. Además, modifique el código para que no se actualice automáticamente y también para acceder a la marca de características de Beta varias veces, como se muestra a continuación.

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

Filtro de características en acción

Al ejecutar la aplicación, el proveedor de configuración cargará el indicador de características Beta desde Azure App Configuration. El resultado del método is_enabled("Beta") se imprimirá en la consola. Como el RandomFilter es implementado y utilizado por la marca de características Beta, el resultado será True el 50 por ciento de las veces y False el otro 50 por ciento de las veces.

Al ejecutar la aplicación se verá que la marca de la característica Beta a veces está habilitada y a veces no.

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

Pasos siguientes

Para más información sobre los filtros de características integrados, continúe con los siguientes tutoriales.