Compartir a través de


Tutorial: Uso de la configuración dinámica en Python

El proveedor de Python de Azure App Configuration incluye funcionalidades integradas de almacenamiento en caché y actualización. En este tutorial se muestra cómo habilitar la configuración dinámica en aplicaciones de Python.

Requisitos previos

Agregar pares de clave-valor

Agregue el siguiente par de clave-valor al almacén de Azure App Configuration. Para obtener más información sobre cómo agregar pares clave-valor a un almacén mediante Azure Portal o la CLI, vaya a Creación de un par clave-valor.

Clave Value Etiqueta Tipo de contenido
message Hola mundo Dejar en blanco Dejar en blanco
sentinel 1 Dejar en blanco Dejar en blanco

Nota:

Una clave de Sentinel es una clave que se actualiza después de completar el cambio de todas las demás claves. La aplicación supervisa la clave de Sentinel. Cuando se detecta un cambio, la aplicación actualiza todos los valores de configuración. Este enfoque ayuda a garantizar la coherencia de la configuración de la aplicación y reduce el número total de solicitudes realizadas al almacén de Azure App Configuration, en comparación con la supervisión de los cambios en todas las claves.

Aplicaciones de consola

  1. Cree un nuevo archivo de Python denominado app.py y agregue el código siguiente:

    Use DefaultAzureCredential para autenticarse en el almacén de App Configuration. Siga las instrucciones para asignar la credencial al rol Lector de datos de App Configuration. Asegúrese de dejar tiempo suficiente para que el permiso se propague antes de ejecutar la aplicación.

    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. Ejecute el script:

    python app.py
    
  3. Compruebe la salida:

    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. Actualice los siguientes pares de clave-valor en el almacén de Azure App Configuration.

    Key Value Etiqueta Tipo de contenido
    message ¡Hola mundo actualizado! Dejar en blanco Dejar en blanco
    sentinel 2 Dejar en blanco Dejar en blanco
  5. Una vez actualizados los valores, el valor actualizado se imprimirá cuando haya pasado el intervalo de actualización.

    Hello World Refreshed!
    

Aplicaciones web

En el ejemplo siguiente se muestra cómo actualizar una aplicación web existente para usar valores de configuración actualizables. Se puede proporcionar una devolución de llamada al argumento de palabra clave on_refresh_success de la función load. Esta devolución de llamada se invocará cuando se detecte un cambio de configuración en el servidor y se puede usar para actualizar los valores de configuración de la aplicación.

En app.py, configure Azure App Configuration para cargar los valores de configuración. A continuación, actualice los puntos de conexión para comprobar si hay valores de configuración actualizados.

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)

Actualice la plantilla index.html para usar los nuevos valores de configuración.

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

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

Puede encontrar un proyecto de ejemplo completo aquí.

Cada vez que se desencadenan estos puntos de conexión, se puede realizar una comprobación de actualización para asegurarse de que se usan los valores de configuración más recientes. La comprobación puede devolverse inmediatamente si el intervalo de actualización no ha pasado o ya hay una actualización en curso.

Cuando se completa una actualización, todos los valores se actualizan a la vez, por lo que la configuración siempre es coherente dentro del objeto.

NOTA: si el intervalo de actualización no ha pasado, entonces la actualización no se intentará y se devolverá inmediatamente.

Pasos siguientes

En este tutorial ha habilitado la aplicación de Python para actualizar dinámicamente la configuración desde Azure App Configuration. Para aprender a usar una identidad administrada de Azure para simplificar el acceso a Azure App Configuration, vaya al siguiente tutorial.