Início Rápido: Adicionar sinalizadores de recurso a um aplicativo do Python (versão prévia)

Neste início rápido, você criará um sinalizador de recursos na Configuração de Aplicativos do Azure e o usará para controlar dinamicamente os aplicativos Python para criar uma implementação de ponta a ponta do gerenciamento de recursos.

O suporte ao gerenciamento de recursos estende o recurso de configuração dinâmica na Configuração de Aplicativos. Estes exemplos no início rápido baseiam-se nos aplicativos Python introduzidos no tutorial de configuração dinâmica. Antes de continuar, primeiro conclua o início rápido e o tutorial para criar aplicativos Python com configuração dinâmica.

Essa biblioteca não tem uma dependência em nenhuma biblioteca do Azure. Elas são integradas diretamente à Configuração de Aplicativos por meio de seu provedor de configuração do Python.

Pré-requisitos

Adicionar um sinalizador de recursos

Adicione um sinalizador de recurso chamado Beta ao repositório da Configuração de Aplicativos e deixe o Rótulo e a Descrição com seus valores padrão. Para mais informações sobre como adicionar sinalizadores de recursos a um repositório usando o portal do Azure ou a CLI, acesse Criar um sinalizador de recurso. Neste estágio, o bloco Habilitar sinalizador de recursos deve ser desmarcado.

Captura de tela da habilitação do sinalizador de recursos chamado Beta.

Aplicativos de console

  1. Instale o Gerenciamento de Recursos usando o comando pip install.

    pip install featuremanagement
    
  2. Crie um novo arquivo Python chamado app.py e adicione o seguinte código:

    from featuremanagement import FeatureManager
    from azure.identity import InteractiveBrowserCredential
    from azure.appconfiguration.provider import load
    import os
    from time import sleep
    
    endpoint = os.environ["APP_CONFIGURATION_ENDPOINT"]
    
    # Connecting to Azure App Configuration using an endpoint
    # credential is used to authenticate the client, the InteractiveBrowserCredential is used for this sample. It will open a browser window to authenticate the user. For all credential options see [credential classes](https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/identity/azure-identity#credential-classes).
    # 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=InteractiveBrowserCredential(), feature_flag_enabled=True, feature_flag_refresh_enabled=True)
    
    feature_manager = FeatureManager(config)
    
    # Is always false
    print("Beta is ", feature_manager.is_enabled("Beta"))
    
    while not feature_manager.is_enabled("Beta"):
        sleep(5)
        config.refresh()
    
    print("Beta is ", feature_manager.is_enabled("Beta"))
    

Ao iniciar o aplicativo, uma janela do navegador será aberta para autenticar o usuário. O usuário deve ter pelo menos a função App Configuration Data Reader para acessar o repositório de Configuração de Aplicativos, consulte Funções de Configuração de Aplicativos para obter mais informações.

  1. Defina uma variável de ambiente chamada APP_CONFIGURATION_ENDPOINT e defina-a como o ponto de extremidade para o repositório de Configuração de Aplicativos. Na linha de comando, execute o seguinte comando e reinicie o prompt de comando para permitir que a alteração entre em vigor:

    Para criar e executar o aplicativo localmente usando o prompt de comando do Windows, execute o seguinte comando:

    setx APP_CONFIGURATION_ENDPOINT "endpoint-of-your-app-configuration-store"
    

    Reinicie o prompt de comando para permitir que a alteração entre em vigor. Valide se ele está definido corretamente imprimindo o valor da variável de ambiente.

  2. Execute o aplicativo Python.

    python app.py
    
  3. No portal da Configuração de Aplicativos, selecione Gerenciador de Recursos e altere o estado do sinalizador de recurso Beta para Ativado, usando a alternância na coluna Habilitado.

    Chave Estado
    Beta Ativado
  4. Após cerca de 30 segundos, que é o intervalo de atualização para o provedor, o aplicativo imprimirá o seguinte:

    Beta is True
    

Aplicativos Web

O exemplo a seguir mostra como atualizar um aplicativo Web existente, usando a Configuração de Aplicativos do Azure com atualização dinâmica para também usar sinalizadores de recursos. Consulte Configuração Dinâmica do Python para obter um exemplo mais detalhado de como usar a atualização dinâmica para os valores de configuração. Antes de continuar, verifique se você tem o sinalizador de recurso Beta habilitado no repositório de Configuração de Aplicativos.

Em app.py, configure o método de carga da Configuração de Aplicativos do Azure para carregar adicionalmente sinalizadores de recursos, juntamente com a habilitação da atualização de sinalizadores de recursos.

from featuremanagement import FeatureManager

...

global azure_app_config, feature_manager
# Connecting to Azure App Configuration using an endpoint
# credential is used to authenticate the client, the InteractiveBrowserCredential is used for this sample. It will open a browser window to authenticate the user. For all credential options see [credential classes](https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/identity/azure-identity#credential-classes).
# 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
azure_app_config = load(endpoint=endpoint, credential=InteractiveBrowserCredential(),
                        refresh_on=[WatchKey("sentinel")],
                        on_refresh_success=on_refresh_success,
                        refresh_interval=10, # Default value is 30 seconds, shortened for this sample
                        feature_flag_enabled=True,
                        feature_flag_refresh_enabled=True,
                    )
feature_manager = FeatureManager(config)

Atualize também suas rotas para verificar se há sinalizadores de recursos atualizados.

@app.route("/")
def index():
    ...
    context["message"] = azure_app_config.get("message")
    context["beta"] = feature_manager.is_enabled("Beta")
    ...

Atualize o modelo index.html para usar os novos sinalizadores de recursos.

...

<body>
  <main>
    <div>
      <h1>{{message}}</h1>
      {% if beta %}
      <h2>Beta is enabled</h2>
      {% endif %}
    </div>
  </main>
</body>

Depois de atualizar e executar seu aplicativo, você poderá ver o sinalizador de recurso em ação, em que a mensagem Beta is enabled será exibida na página, mas somente se o sinalizador de recurso estiver habilitado no repositório de Configuração de Aplicativos.

Captura de tela da habilitação do sinalizador de recursos beta habilitada.

Você pode encontrar um projeto de exemplo completo aqui.

Sempre que esses pontos de extremidade são disparados, uma verificação de atualização pode ser executada para garantir que os valores de configuração mais recentes sejam usados. A verificação poderá retornar imediatamente se o intervalo de atualização não tiver passado ou uma atualização já estiver em andamento.

Quando uma atualização é concluída, todos os valores são atualizados de uma só vez, portanto, a configuração é sempre consistente dentro do objeto.

Limpar os recursos

Se não deseja continuar usando os recursos criados neste artigo, exclua o grupo de recursos que você criou aqui para evitar encargos.

Importante

A exclusão de um grupo de recursos é irreversível. O grupo de recursos e todos os recursos contidos nele são excluídos permanentemente. Não exclua acidentalmente grupo de recursos ou recursos incorretos. Se tiver criado os recursos para este artigo dentro de um grupo de recursos que contém outros recursos que você deseja manter, exclua cada um individualmente do respectivo painel em vez de excluir o grupo de recursos.

  1. Entre no portal do Azure e selecione Grupos de recursos.
  2. Na caixa Filtrar por nome..., digite o nome do seu grupo de recursos.
  3. Na lista de resultados, selecione o nome do grupo de recursos para conferir uma visão geral.
  4. Selecione Excluir grupo de recursos.
  5. Você receberá uma solicitação para confirmar a exclusão do grupo de recursos. Insira o nome do grupo de recursos para confirmar e selecione Excluir.

Após alguns instantes, o grupo de recursos e todos os recursos dele são excluídos.

Próximas etapas

Neste início rápido, você criou um novo repositório de Configuração de Aplicativos e o usou para gerenciar recursos em um aplicativo Python por meio da biblioteca do Gerenciamento de Recursos.