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
- Una cuenta de Azure con una suscripción activa. cree una de forma gratuita.
- Un almacén de Azure App Configuration. Crear un almacén.
- Python 3.8 o posterior: para información sobre cómo configurar Python en Windows, consulte la documentación de Python en Windows
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
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)
Ejecute el script:
python app.py
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!
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 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.