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
- Een Azure-account met een actief abonnement. Maak gratis een account.
- Een Azure-app Configuratiearchief. Een winkel maken.
- Python 3.8 of hoger: zie de Documentatie voor Python in Windows voor meer informatie over het instellen van Python in Windows
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
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)
Voer uw script uit:
python app.py
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!
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 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.py
Stel 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>
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.