Partager via


Tutoriel : Activer des fonctionnalités conditionnelles avec un filtre personnalisé dans une application Python

Les indicateurs de fonctionnalités peuvent utiliser des filtres de fonctionnalités pour activer des fonctionnalités de manière conditionnelle. Pour en savoir plus sur les filtres de fonctionnalités, consultez Tutoriel : Activer des fonctionnalités conditionnelles avec des filtres de fonctionnalités.

L’exemple utilisé dans ce tutoriel repose sur l’application Python présentée dans le guide de démarrage rapide sur la gestion des fonctionnalités. Avant de continuer, effectuez ce démarrage rapide pour créer une application Python avec un indicateur de fonctionnalité Beta. Une fois terminé, vous devez ajouter un filtre de fonctionnalités personnalisé à l’indicateur de fonctionnalité Beta dans votre magasin App Configuration.

Dans ce tutoriel, vous allez apprendre à implémenter un filtre de fonctionnalités personnalisé et à l’utiliser pour activer les fonctionnalités de manière conditionnelle.

Prérequis

Implémenter un filtre de fonctionnalité personnalisé

Vous avez ajouté un filtre de fonctionnalités personnalisé nommé Random avec un paramètre Percentage pour votre indicateur de fonctionnalité Beta dans les prérequis. Ensuite, implémentez le filtre de fonctionnalités pour activer l’indicateur de fonctionnalité Beta en fonction de la probabilité définie par le paramètre Percentage.

  1. Ajoutez un fichier RandomFilter.py avec le code suivant.

    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
    

    Vous avez ajouté une classe RandomFilter qui implémente la classe abstraite FeatureFilter de la bibliothèque FeatureManagement. La classe FeatureFilter dispose d’une méthode unique nommée evaluate, qui est appelée à chaque évaluation d’un indicateur de fonctionnalité. Dans evaluate, un filtre de fonctionnalités active un indicateur de fonctionnalité en retournant true.

    Vous avez décoré un FeatureFilter.alias pour le RandomFilter afin de donner à votre filtre un alias Random, qui correspond au nom de filtre que vous avez défini dans l’indicateur de fonctionnalité Beta dans Azure App Configuration.

  2. Ouvrez le fichier app.py et inscrivez RandomFilter au moment de créer FeatureManager. De même, modifiez le code pour éviter une actualisation automatique et accéder également à l’indicateur de fonctionnalité Beta à plusieurs reprises, comme le montre l’exemple ci-dessous.

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

Filtre de fonctionnalités en action

Lorsque vous exécutez l’application, le fournisseur de configuration charge l’indicateur de fonctionnalité Beta à partir d’Azure App Configuration. Le résultat de la méthode is_enabled("Beta") est imprimé dans la console. L’implémentation de RandomFilter et son utilisation par l’indicateur de fonctionnalité Beta a pour résultat True 50 % du temps et False le reste du temps.

L’exécution de l’application montre que l’indicateur de fonctionnalité Beta est parfois activé et que d’autres fois il ne l’est pas.

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

Étapes suivantes

Pour en savoir plus sur les filtres de fonctionnalités intégrés, passez aux tutoriels suivants.