Tutorial: Habilitar recursos condicionais com um filtro personalizado em um aplicativo Python

Os sinalizadores de recursos podem usar filtros de recursos para habilitar recursos condicionalmente. Para saber mais sobre filtros de recursos, consulte Tutorial: Habilitar recursos condicionais com filtros de recursos.

O exemplo usado neste tutorial é baseado no aplicativo Python introduzido no início rápido de gerenciamento de recursos. Antes de prosseguir, conclua o início rápido para criar um aplicativo Python com um sinalizador de recurso Beta . Depois de concluído, você deve adicionar um filtro de recurso personalizado ao sinalizador de recurso Beta em sua loja de configuração de aplicativos.

Neste tutorial, você aprenderá como implementar um filtro de recursos personalizado e usar o filtro de recursos para habilitar recursos condicionalmente.

Pré-requisitos

Implementar um filtro de recurso personalizado

Você adicionou um filtro de recurso personalizado chamado Aleatório com um parâmetro Porcentagem para o sinalizador de recurso Beta nos pré-requisitos. Em seguida, implemente o filtro de recursos para habilitar o sinalizador de recurso Beta com base na chance definida pelo parâmetro Percentagem .

  1. Adicione um RandomFilter.py arquivo com o código a seguir.

    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
    

    Você adicionou uma RandomFilter classe que implementa a FeatureFilter classe abstrata da FeatureManagement biblioteca. A FeatureFilter classe tem um único método chamado evaluate, que é chamado sempre que um sinalizador de recurso é avaliado. No evaluate, um filtro de recursos habilita um sinalizador de recurso retornando true.

    Você decorou um FeatureFilter.alias para dar ao RandomFilter seu filtro um alias Random, que corresponde ao nome do filtro definido no sinalizador de recurso Beta na Configuração do Aplicativo do Azure.

  2. Abra o arquivo app.py e registre o RandomFilter ao criar o FeatureManagerarquivo . Além disso, modifique o código para não atualizar automaticamente e também para acessar o sinalizador de recurso Beta algumas vezes, como visto abaixo.

    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 recursos em ação

Quando você executa o aplicativo, o provedor de configuração carregará o sinalizador de recurso Beta da Configuração do Aplicativo do Azure. O resultado do is_enabled("Beta") método será impresso no console. Como o RandomFilter é implementado e usado pelo sinalizador de recurso Beta , o resultado será True 50 por cento do tempo e False os outros 50 por cento do tempo.

A execução do aplicativo mostrará que o sinalizador de recurso Beta às vezes está habilitado e às vezes não.

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

Próximos passos

Para saber mais sobre os filtros de recursos internos, continue para os tutoriais a seguir.