Partilhar via


Tutorial: Usar configuração dinâmica em Python

O provedor Python de Configuração de Aplicativo do Azure inclui recursos internos de cache e atualização. Este tutorial mostra como habilitar a configuração dinâmica em aplicativos Python.

Pré-requisitos

  • Uma conta do Azure com uma subscrição ativa. Crie um gratuitamente.
  • Uma loja de Configuração de Aplicativos do Azure. Crie uma loja.
  • Python 3.8 ou posterior - para obter informações sobre como configurar o Python no Windows, consulte a documentação do Python no Windows

Adicionar valores-chave

Adicione o seguinte valor-chave à sua loja de Configuração de Aplicações do Azure. Para obter mais informações sobre como adicionar valores-chave a uma loja usando o portal do Azure ou a CLI, vá para Criar um valor-chave.

Key valor Etiqueta Tipo do conteúdo
mensagem Olá, mundo! Deixar em branco Deixar em branco
sentinela 1 Deixar em branco Deixar em branco

Nota

Uma chave sentinela é uma chave que você atualiza depois de concluir a alteração de todas as outras chaves. Seu aplicativo monitora a chave sentinela. Quando uma alteração é detetada, seu aplicativo atualiza todos os valores de configuração. Essa abordagem ajuda a garantir a consistência da configuração em seu aplicativo e reduz o número geral de solicitações feitas à sua loja de Configuração de Aplicativo do Azure, em comparação com o monitoramento de todas as chaves para alterações.

Aplicações de consola

  1. Crie um novo arquivo Python chamado app.py e adicione o seguinte código:

    Você usa o para autenticar em DefaultAzureCredential sua loja de configuração de aplicativos. Siga as instruções para atribuir à sua credencial a função de Leitor de Dados de Configuração do Aplicativo. Certifique-se de dar tempo suficiente para que a permissão se propague antes de executar seu aplicativo.

    from azure.appconfiguration.provider import load, WatchKey
    from azure.identity import DefaultAzureCredential
    import os
    import time
    
    endpoint = os.environ.get("APPCONFIGURATION_ENDPOINT")
    
    # Connecting to Azure App Configuration using connection string
    # Setting up to refresh when the Sentinel key is changed.
    config = load(
        endpoint=endpoint,
        credential=DefaultAzureCredential(),
        refresh_on=[WatchKey("sentinel")],
        refresh_interval=10, # Default value is 30 seconds, shorted for this sample
    )
    
    print("Update the `message` in your Azure App Configuration store using Azure portal or CLI.")
    print("First, update the `message` value, and then update the `sentinel` key value.")
    
    while (True):
        # Refreshing the configuration setting
        config.refresh()
    
        # Current value of message
        print(config["message"])
    
        # Waiting before the next refresh
        time.sleep(5)
    
  2. Execute o script:

    python app.py
    
  3. Verificar saída:

    Update the `message` in your Azure App Configuration store using Azure portal or CLI.
    First, update the `message` value, and then update the `sentinel` key value.
    Hello World!
    
  4. Atualize os seguintes valores-chave para o repositório de Configuração de Aplicativos do Azure.

    Key valor Etiqueta Tipo do conteúdo
    mensagem Olá Mundo Atualizado! Deixar em branco Deixar em branco
    sentinela 2 Deixar em branco Deixar em branco
  5. Uma vez que os valores tenham sido atualizados, o valor atualizado será impresso quando o intervalo de atualização tiver passado.

    Hello World Refreshed!
    

Aplicações Web

O exemplo a seguir mostra como atualizar um aplicativo Web existente para usar valores de configuração atualizáveis. Um retorno de chamada pode ser fornecido para o on_refresh_success argumento de palavra-chave da load função. Esse retorno de chamada será invocado quando uma alteração de configuração for detetada no servidor e pode ser usado para atualizar os valores de configuração no aplicativo.

No app.py, configure a Configuração do Aplicativo do Azure para carregar seus valores de configuração. Em seguida, atualize seus pontos de extremidade para verificar se há valores de configuração atualizados.

from azure.appconfiguration.provider import load, WatchKey
from azure.identity import DefaultAzureCredential

azure_app_config = None  # declare azure_app_config as a global variable

def on_refresh_success():
   app.config.update(azure_app_config)


global azure_app_config
azure_app_config = load(endpoint=os.environ.get("AZURE_APPCONFIG_ENDPOINT"),
                        credential=DefaultAzureCredential(),
                        refresh_on=[WatchKey("sentinel")],
                        on_refresh_success=on_refresh_success,
                        refresh_interval=10, # Default value is 30 seconds, shortened for this sample
                    )




@app.route("/")
def index():
    global azure_app_config
    # Refresh the configuration from Azure App Configuration service.
    azure_app_config.refresh()

    # Access a configuration setting directly from within Flask configuration
    print("Request for index page received")
    context = {}
    context["message"] = app.config.get("message")
    return render_template("index.html", **context)

Atualize seu modelo index.html para usar os novos valores de configuração.

<!doctype html>
<head>
  <title>Hello Azure App Configuration - Python Flask Example</title>
</head>
<html>

<body>
  <main>
    <div>
      <h1>{{message}}</h1>
    </div>
  </main>
</body>
</html>

Você pode encontrar um exemplo completo do projeto aqui.

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

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

NOTA: Se o intervalo de atualização não tiver passado, a atualização não será tentada e devolvida imediatamente.

Próximos passos

Neste tutorial, você habilitou seu aplicativo Python para atualizar dinamicamente as definições de configuração da Configuração do Aplicativo do Azure. Para saber como usar uma identidade gerenciada do Azure para simplificar o acesso à Configuração do Aplicativo do Azure, continue para o próximo tutorial.