Tutoriel : Utiliser la configuration dynamique en Python
Le fournisseur Python Azure App Configuration comprend des fonctionnalités intégrées de mise en cache et d’actualisation. Ce didacticiel explique comment intégrer une configuration dynamique dans des applications Python.
Prérequis
- Compte Azure avec un abonnement actif. Créez-en un gratuitement.
- Un magasin Azure App Configuration. Créez un magasin.
- Python 3.8 ou version ultérieure : pour plus d’informations sur la configuration de Python sur Windows, consultez la documentation de Python sur Windows
Ajouter des clés-valeurs
Ajoutez la valeur de clés suivante à votre magasin Azure App Configuration. Pour plus d’informations sur l’ajout de clés-valeurs à un magasin avec le Portail Azure ou la CLI, consultez Créer une clé-valeur.
Clé | Valeur | Étiquette | Type de contenu |
---|---|---|---|
message | Hello World! | Laissez ce champ vide | Laissez ce champ vide |
sentinel | 1 | Laissez ce champ vide | Laissez ce champ vide |
Remarque
Une clé Sentinel est une clé que vous mettez à jour après avoir modifié toutes les autres clés. Votre application supervise la clé Sentinel. Lorsqu’un changement est détecté, votre application actualise toutes les valeurs de configuration. Cette approche permet de garantir la cohérence de la configuration dans votre application et de réduire le nombre total de demandes adressées à votre magasin Azure App Configuration, par rapport au monitoring des changements de toutes les clés.
Applications console
Créez un fichier Python nommé app.py et ajoutez le code suivant :
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)
Exécutez votre script :
python app.py
Vérification de la sortie :
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!
Mettez à jour les valeurs de clés suivantes dans le magasin Azure App Configuration.
Clé Valeur Étiquette Type de contenu message Hello World actualisé ! Laissez ce champ vide Laissez ce champ vide sentinel 2 Laissez ce champ vide Laissez ce champ vide Une fois que les valeurs ont été mises à jour, la valeur mise à jour s’affiche lorsque l’intervalle d’actualisation est passé.
Hello World Refreshed!
Applications web
L’exemple suivant montre comment mettre à jour une application web existante pour qu’elle utilise des valeurs de configuration actualisables. Un rappel peut être fourni à l’argument de mot clé on_refresh_success
de la fonction load
. Ce rappel est appelé lorsqu’une modification de configuration est détectée sur le serveur et il peut être utilisé pour mettre à jour les valeurs de configuration dans l’application.
Dans app.py
, configurez Azure App Configuration pour charger vos valeurs de configuration. Ensuite, mettez à jour vos points de terminaison pour rechercher les valeurs de configuration mises à jour.
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)
Mettez à jour votre modèle index.html
pour qu’il utilise les nouvelles valeurs de configuration.
<!doctype html>
<head>
<title>Hello Azure App Configuration - Python Flask Example</title>
</head>
<html>
<body>
<main>
<div>
<h1>{{message}}</h1>
</div>
</main>
</body>
</html>
Vous trouverez un exemple complet de projet ici.
Chaque fois que ces points de terminaison sont déclenchés, une vérification d’actualisation peut être effectuée pour vous assurer que les dernières valeurs de configuration sont utilisées. La vérification peut retourner immédiatement si l’intervalle d’actualisation n’a pas réussi ou si une actualisation est déjà en cours.
Lorsqu’une actualisation est terminée, toutes les valeurs sont mises à jour à la fois, de sorte que la configuration est toujours cohérente dans l’objet.
REMARQUE : si l’intervalle d’actualisation n’est pas passé, l’actualisation ne sera pas tentée et retournée immédiatement.
Étapes suivantes
Dans ce tutoriel, vous avez permis à votre application Python d’actualiser dynamiquement les paramètres de configuration à partir d’Azure App Configuration. Pour savoir comment utiliser une identité managée Azure de façon à simplifier l’accès à Azure App Configuration, passez au tutoriel suivant.