Samouczek: używanie konfiguracji dynamicznej w języku Python
Dostawca aplikacja systemu Azure Configuration w języku Python obejmuje wbudowane funkcje buforowania i odświeżania. W tym samouczku pokazano, jak włączyć konfigurację dynamiczną w aplikacjach języka Python.
Wymagania wstępne
- Konto platformy Azure z aktywną subskrypcją. Utwórz je bezpłatnie.
- Magazyn konfiguracji aplikacja systemu Azure. Utwórz magazyn.
- Python 3.8 lub nowszy — aby uzyskać informacje na temat konfigurowania języka Python w systemie Windows, zobacz dokumentację języka Python w systemie Windows
Dodawanie wartości klucz-wartość
Dodaj następującą wartość klucza do magazynu konfiguracji aplikacja systemu Azure. Aby uzyskać więcej informacji na temat dodawania wartości klucz-wartości do magazynu przy użyciu witryny Azure Portal lub interfejsu wiersza polecenia, przejdź do artykułu Create a key-value (Tworzenie wartości klucza).
Key | Wartość | Etykieta | Typ zawartości |
---|---|---|---|
message | Cześć ludzie! | Pozostaw pole puste | Pozostaw pole puste |
Sentinel | 1 | Pozostaw pole puste | Pozostaw pole puste |
Uwaga
Klucz sentinel to klucz aktualizowany po zakończeniu zmiany wszystkich innych kluczy. Aplikacja monitoruje klucz sentinel. Po wykryciu zmiany aplikacja odświeża wszystkie wartości konfiguracji. Takie podejście pomaga zapewnić spójność konfiguracji w aplikacji i zmniejszyć ogólną liczbę żądań wysyłanych do magazynu konfiguracji aplikacja systemu Azure w porównaniu do monitorowania wszystkich kluczy pod kątem zmian.
Aplikacje konsolowe
Utwórz nowy plik w języku Python o nazwie app.py i dodaj następujący kod:
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)
Uruchom skrypt:
python app.py
Sprawdź dane wyjściowe:
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!
Zaktualizuj następujące wartości klucza do magazynu konfiguracji aplikacja systemu Azure.
Key Wartość Etykieta Typ zawartości message Witaj, odświeżony świat! Pozostaw pole puste Pozostaw pole puste Sentinel 2 Pozostaw pole puste Pozostaw pole puste Po zaktualizowaniu wartości zaktualizowana wartość zostanie wydrukowana po upływie interwału odświeżania.
Hello World Refreshed!
Aplikacje sieci Web
W poniższym przykładzie pokazano, jak zaktualizować istniejącą aplikację internetową w celu używania odświeżalnych wartości konfiguracji. Wywołanie zwrotne można dostarczyć do argumentu on_refresh_success
kluczowego load
funkcji. To wywołanie zwrotne zostanie wywołane po wykryciu zmiany konfiguracji na serwerze i może służyć do aktualizowania wartości konfiguracji w aplikacji.
W app.py
programie skonfiguruj aplikacja systemu Azure Configuration w celu załadowania wartości konfiguracji. Następnie zaktualizuj punkty końcowe, aby sprawdzić zaktualizowane wartości konfiguracji.
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)
Zaktualizuj szablon index.html
, aby używał nowych wartości konfiguracji.
<!doctype html>
<head>
<title>Hello Azure App Configuration - Python Flask Example</title>
</head>
<html>
<body>
<main>
<div>
<h1>{{message}}</h1>
</div>
</main>
</body>
</html>
Pełny przykładowy projekt można znaleźć tutaj.
Za każdym razem, gdy te punkty końcowe są wyzwalane, można sprawdzić odświeżanie, aby upewnić się, że są używane najnowsze wartości konfiguracji. Sprawdzanie może zwrócić natychmiast, jeśli interwał odświeżania nie został przekazany lub odświeżanie jest już w toku.
Po zakończeniu odświeżania wszystkie wartości są aktualizowane jednocześnie, więc konfiguracja jest zawsze spójna w obiekcie.
UWAGA: Jeśli interwał odświeżania nie został przekazany, odświeżanie nie zostanie podjęta i zwrócona od razu.
Następne kroki
W tym samouczku włączono aplikację w języku Python, aby dynamicznie odświeżać ustawienia konfiguracji z aplikacja systemu Azure Configuration. Aby dowiedzieć się, jak używać tożsamości zarządzanej platformy Azure w celu usprawnienia dostępu do usługi aplikacja systemu Azure Configuration, przejdź do następnego samouczka.