Delen via


Zelfstudie: Dynamische configuratie gebruiken in Python

De Azure-app Python-provider voor configuratie bevat ingebouwde cache- en vernieuwmogelijkheden. Deze zelfstudie laat zien hoe u dynamische configuratie inschakelt in Python-toepassingen.

Vereisten

Sleutelwaarden toevoegen

Voeg de volgende sleutelwaarde toe aan het Azure-app Configuratiearchief. Ga naar Een sleutelwaarde maken voor meer informatie over het toevoegen van sleutelwaarden aan een archief met behulp van Azure Portal of de CLI.

Sleutel Waarde Label Inhoudstype
bericht Hallo wereld! Leeg laten Leeg laten
wacht 1 Leeg laten Leeg laten

Notitie

Een sentinel-sleutel is een sleutel die u bijwerkt nadat u de wijziging van alle andere sleutels hebt voltooid. Uw app bewaakt de sentinel-sleutel. Wanneer er een wijziging wordt gedetecteerd, vernieuwt uw app alle configuratiewaarden. Deze aanpak helpt om de consistentie van de configuratie in uw app te garanderen en vermindert het totale aantal aanvragen dat is gedaan in uw Azure-app Configuratiearchief, vergeleken met het bewaken van alle sleutels voor wijzigingen.

Consoletoepassingen

  1. Maak een nieuw Python-bestand met de naam app.py en voeg de volgende code toe:

    U gebruikt de DefaultAzureCredential app om u te verifiëren bij uw App Configuration-archief. Volg de instructies om uw referenties toe te wijzen aan de rol App Configuration Data Reader . Zorg ervoor dat u voldoende tijd hebt om de machtiging door te geven voordat u de toepassing uitvoert.

    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. Voer uw script uit:

    python app.py
    
  3. Uitvoer controleren:

    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. Werk de volgende sleutelwaarden bij naar het Azure-app Configuratiearchief.

    Sleutel Waarde Label Inhoudstype
    bericht Hallo wereld vernieuwd. Leeg laten Leeg laten
    wacht 2 Leeg laten Leeg laten
  5. Zodra de waarden zijn bijgewerkt, wordt de bijgewerkte waarde afgedrukt wanneer het vernieuwingsinterval is verstreken.

    Hello World Refreshed!
    

Webtoepassingen

In het volgende voorbeeld ziet u hoe u een bestaande webtoepassing bijwerkt om vernieuwbare configuratiewaarden te gebruiken. Een callback kan worden opgegeven voor het on_refresh_success trefwoordargument van de load functie. Deze callback wordt aangeroepen wanneer een configuratiewijziging wordt gedetecteerd op de server en kan worden gebruikt om de configuratiewaarden in de toepassing bij te werken.

app.pyStel in Azure-app Configuration in om uw configuratiewaarden te laden. Werk vervolgens uw eindpunten bij om te controleren op bijgewerkte configuratiewaarden.

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)

Werk uw sjabloon index.html bij om de nieuwe configuratiewaarden te gebruiken.

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

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

Hier vindt u een volledig voorbeeldproject.

Wanneer deze eindpunten worden geactiveerd, kan er een vernieuwingscontrole worden uitgevoerd om ervoor te zorgen dat de meest recente configuratiewaarden worden gebruikt. De controle kan onmiddellijk worden geretourneerd als het vernieuwingsinterval niet is geslaagd of als er al een vernieuwing wordt uitgevoerd.

Wanneer een vernieuwing is voltooid, worden alle waarden in één keer bijgewerkt, zodat de configuratie altijd consistent is binnen het object.

OPMERKING: Als het vernieuwingsinterval niet is verstreken, wordt de vernieuwing niet meteen geprobeerd en geretourneerd.

Volgende stappen

In deze zelfstudie hebt u uw Python-app ingeschakeld om configuratie-instellingen dynamisch te vernieuwen vanuit Azure-app Configuratie. Als u wilt weten hoe u een door Azure beheerde identiteit gebruikt om de toegang tot Azure-app Configuratie te stroomlijnen, gaat u verder met de volgende zelfstudie.