Tutorial: Como usar a configuração dinâmica em um aplicativo Python

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

Pré-requisitos

Adicionar valores-chave

Adicione os seguintes valores-chave ao repositório da Configuração de Aplicativos do Azure. Para mais informações sobre como adicionar valores-chave a um repositório usando o portal do Azure ou a CLI, acesse Criar um valor-chave.

Chave Valor Rótulo Tipo de conteúdo
message Olá, Mundo! Deixar em branco Deixar em branco
sentinel 1 Deixar em branco Deixar em branco

Observação

A 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 é detectada, o aplicativo atualiza todos os valores de configuração. Essa abordagem ajuda a garantir a consistência da configuração no aplicativo e reduz o número geral de solicitações feitas ao repositório de Configuração de Aplicativos do Azure em comparação ao monitoramento de todas as chaves quanto a alterações.

Aplicativos de console

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

    from azure.appconfiguration.provider import load, WatchKey
    import os
    import time
    
    connection_string = os.environ.get("APPCONFIGURATION_CONNECTION_STRING")
    
    # Connecting to Azure App Configuration using connection string
    # Setting up to refresh when the Sentinel key is changed.
    config = load(
        connection_string=connection_string,
        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. Executar o script:

    python app.py
    
  3. Verificar a 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 ao repositório da Configuração de Aplicativos do Azure.

    Chave Valor Rótulo Tipo de conteúdo
    message Olá, Mundo Atualizado! Deixar em branco Deixar em branco
    sentinel 2 Deixar em branco Deixar em branco
  5. Depois que os valores forem atualizados, o valor atualizado será impresso quando o intervalo de atualização tiver passado.

    Hello World Refreshed!
    

Aplicativos 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 argumento de palavra-chave on_refresh_success da função load. Esse retorno de chamada será invocado quando uma alteração de configuração for detectada no servidor e poderá ser usada para atualizar os valores de configuração no aplicativo.

Em app.py, configure a Configuração de Aplicativos 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

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(connection_string=os.environ.get("AZURE_APPCONFIG_CONNECTION_STRING")
                        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 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.

OBSERVAÇÃO: se o intervalo de atualização não tiver passado, a atualização não será tentada e retornada imediatamente.

Próximas etapas

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