Share 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 Etiket Content type
bericht Hallo wereld! Leeg laten Leeg laten
Sentinel 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:

    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. 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 Etiket Content type
    bericht Hallo wereld vernieuwd. Leeg laten Leeg laten
    Sentinel 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

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)

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.