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

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

  1. 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)
    
  2. Exécutez votre script :

    python app.py
    
  3. 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!
    
  4. 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
  5. 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.