Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Azure App Configuration Python-providern innehåller inbyggda funktioner för cachelagring och uppdatering. Den här handledningen visar hur du aktiverar dynamisk konfiguration i Python-applikationer.
Förutsättningar
- Ett Azure-konto med en aktiv prenumeration. Skapa en kostnadsfritt.
- En Azure App Configuration-butik. Skapa en butik.
- Python 3.8 eller senare. För information om hur man sätter upp Python på Windows, se dokumentationen för Python on Windows.
Lägga till nyckelvärden
Lägg till följande nyckelvärde i Azure App Configuration Store. Mer information om hur du lägger till nyckelvärden i ett lager med hjälp av Azure-portalen eller CLI:t finns i Skapa ett nyckelvärde.
| Tangent | Värde | Etikett | Innehållstyp |
|---|---|---|---|
| meddelande | Hej världen! | Lämna tom | Lämna tom |
| sentinel | 1 | Lämna tom | Lämna tom |
Kommentar
En sentinel-nyckel är en nyckel som du uppdaterar när du har slutfört ändringen av alla andra nycklar. Din app övervakar sentinelnyckeln. När en ändring identifieras uppdaterar appen alla konfigurationsvärden. Den här metoden hjälper till att säkerställa konsekvensen i konfigurationen i din app och minskar det totala antalet begäranden som görs till Azure App Configuration Store, jämfört med övervakning av alla nycklar för ändringar.
Konsolprogram
Skapa en ny Python-fil med namnet app.py och lägg till följande kod:
Du använder
DefaultAzureCredentialför att autentisera dig mot ditt App Configuration-arkiv. Följ anvisningarna för att tilldela dina autentiseringsuppgifter rollen App Configuration Data Reader. Se till att ge tillräckligt med tid för att behörigheten ska spridas innan du kör programmet.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)Kör skriptet:
python app.pyKontrollera utdata.
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!Uppdatera följande nyckelvärden till Azure App Configuration Store.
Nyckel Värde Etikett Innehållstyp meddelande Hello World har uppdaterats! Lämna tom Lämna tom sentinel 2 Lämna tom Lämna tom Efter att värdena har uppdaterats och uppdateringsintervallet passerat visas det uppdaterade värdet.
Hello World Refreshed!
Webbapplikationer
I följande exempel visas hur du uppdaterar ett befintligt webbprogram för att använda uppdateringsbara konfigurationsvärden. Du kan ange ett återanrop till nyckelordsargumentet on_refresh_success för load funktionen. Återanropet anropas när en konfigurationsändring identifieras på servern och kan användas för att uppdatera konfigurationsvärdena i programmet.
I app.py konfigurerar du Azure App Configuration för att läsa in dina konfigurationsvärden. Uppdatera sedan dina slutpunkter för att söka efter uppdaterade konfigurationsvärden.
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)
Uppdatera mallen index.html så att den använder de nya konfigurationsvärdena.
<!doctype html>
<head>
<title>Hello Azure App Configuration - Python Flask Example</title>
</head>
<html>
<body>
<main>
<div>
<h1>{{message}}</h1>
</div>
</main>
</body>
</html>
Du hittar ett fullständigt exempelprojekt här.
När dessa slutpunkter utlöses kan en uppdateringskontroll utföras för att säkerställa att de senaste konfigurationsvärdena används. Kontrollen kan returneras omedelbart om uppdateringsintervallet inte har passerat eller om en uppdatering redan pågår.
När en uppdatering är klar uppdateras alla värden samtidigt, så konfigurationen är alltid konsekvent i objektet.
Kommentar
Om uppdateringsintervallet inte har passerat försöks ingen uppdatering och kontrollen återkommer omedelbart.
Nästa steg
I den här självstudien har du aktiverat Python-appen för att dynamiskt uppdatera konfigurationsinställningarna från Azure App Configuration. Om du vill lära dig hur du använder en hanterad Azure-identitet för att effektivisera åtkomsten till Azure App Configuration fortsätter du till nästa självstudie.