Condividi tramite


Esercitazione: Abilitare le funzionalità condizionali con un filtro personalizzato in un'applicazione Python

I flag di funzionalità possono usare filtri di funzionalità per abilitare le funzionalità in modo condizionale. Per altre informazioni sui filtri delle funzionalità, vedere Esercitazione: Abilitare le funzionalità condizionali con filtri di funzionalità.

L'esempio usato in questa esercitazione si basa sull'applicazione Python introdotta nell’avvio rapido alla gestione delle funzionalità. Prima di continuare, completare l’avvio rapido per creare un'applicazione Python con un flag di funzionalità Beta. Al termine, è necessario aggiungere un filtro di funzionalità personalizzato al flag di funzionalità Beta nell'archivio di configurazione app.

In questa esercitazione si apprenderà a implementare un filtro di funzionalità personalizzato e usare il filtro delle funzionalità per abilitare le funzionalità in modo condizionale.

Prerequisiti

Implementare un filtro di funzionalità personalizzato

È stato aggiunto un filtro di funzionalità personalizzato denominato Casuale con un parametro Percentuale per il flag di funzionalità Beta nei prerequisiti. Successivamente, si implementa il filtro delle funzionalità per abilitare il flag di funzionalità Beta in base alla probabilità definita dal parametro Percentuale.

  1. Aggiungere un file RandomFilter.py con il codice seguente.

    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
    

    È stata aggiunta una classe RandomFilter che implementa la classe astratta FeatureFilter dalla libreria FeatureManagement. La classe FeatureFilter ha un singolo metodo denominato evaluate, che viene chiamato ogni volta che viene valutato un flag di funzionalità. In evaluate, un filtro di funzionalità abilita un flag di funzionalità restituendo true.

    È stato decorato un FeatureFilter.alias in RandomFilter per assegnare al filtro un alias Casuale, che corrisponde al nome del filtro impostato nel flag di funzionalità Beta in Configurazione app di Azure.

  2. Aprire il file app.py e registrare RandomFilter durante la creazione di FeatureManager. Inoltre, modificare il codice per non aggiornare automaticamente e per accedere anche al flag di funzionalità Beta alcune volte, come illustrato di seguito.

    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 funzionalità in azione

Quando si esegue l'applicazione, il provider di configurazione caricherà il flag di funzionalità Beta da Configurazione app di Azure. Il risultato del metodo is_enabled("Beta") verrà stampato nella console. Poiché RandomFilter viene implementato e usato dal flag di funzionalità Beta, il risultato sarà True il 50% del tempo e False l'altro 50% del tempo.

L'esecuzione dell'applicazione mostrerà che il flag di funzionalità Beta è talvolta abilitato e talvolta 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

Passaggi successivi

Per altre informazioni sui filtri di funzionalità predefiniti, continuare con le esercitazioni seguenti.