Руководство. Использование динамической конфигурации в Python
Поставщик Конфигурация приложений Azure Python включает встроенные возможности кэширования и обновления. В этом руководстве показано, как включить динамическую конфигурацию в приложениях Python.
Необходимые компоненты
- Учетная запись Azure с активной подпиской. Создайте ее бесплатно.
- Хранилище Конфигурация приложений Azure. Создайте хранилище.
- Python 3.8 или более поздней версии— сведения о настройке Python в Windows см. в документации по Python в Windows.
Добавление ключевых значений
Добавьте следующее ключевое значение в хранилище Конфигурация приложений Azure. Дополнительные сведения о добавлении значений ключей в хранилище с помощью портал Azure или ИНТЕРФЕЙСА командной строки см. в разделе "Создание значения ключа".
Ключ | значение | Метка | Content type |
---|---|---|---|
message | Hello World! | Оставьте пустым | Оставьте пустым |
sentinel | 1 | Оставьте пустым | Оставьте пустым |
Примечание.
Ключ sentinel — это ключ , который вы обновляете после завершения изменения всех остальных ключей. Приложение отслеживает ключ sentinel. При обнаружении изменения приложение обновляет все значения конфигурации. Этот подход помогает обеспечить согласованность конфигурации в приложении и сократить общее количество запросов, сделанных в хранилище Конфигурация приложений Azure, по сравнению с мониторингом всех ключей для изменений.
Консольные приложения
Создайте файл Python с именем app.py и добавьте следующий код:
Вы используете
DefaultAzureCredential
для проверки подлинности в хранилище Конфигурация приложений. Следуйте инструкциям, чтобы назначить учетные данные роли чтения данных Конфигурация приложений. Перед запуском приложения обязательно предоставьте достаточно времени для распространения разрешения.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)
Запустите скрипт:
python app.py
Проверьте выходные данные:
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!
Обновите следующие ключевые значения в хранилище Конфигурация приложений Azure.
Ключ значение Метка Content type message Hello World Refreshed! Оставьте пустым Оставьте пустым sentinel 2 Оставьте пустым Оставьте пустым После обновления обновленных значений будет выводиться после прохождения интервала обновления.
Hello World Refreshed!
Веб-приложения
В следующем примере показано, как обновить существующее веб-приложение для использования обновляемых значений конфигурации. Обратный вызов можно предоставить ключевому load
слову on_refresh_success
функции. Этот обратный вызов будет вызываться при обнаружении изменения конфигурации на сервере, и его можно использовать для обновления значений конфигурации в приложении.
Настройте app.py
Конфигурация приложений Azure для загрузки значений конфигурации. Затем обновите конечные точки, чтобы проверить наличие обновленных значений конфигурации.
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)
Обновите шаблон index.html
, чтобы использовать новые значения конфигурации.
<!doctype html>
<head>
<title>Hello Azure App Configuration - Python Flask Example</title>
</head>
<html>
<body>
<main>
<div>
<h1>{{message}}</h1>
</div>
</main>
</body>
</html>
Полный пример проекта можно найти здесь.
При активации этих конечных точек можно выполнить проверку обновления, чтобы обеспечить использование последних значений конфигурации. Проверка может вернуться немедленно, если интервал обновления не прошел или обновление уже выполняется.
После завершения обновления все значения обновляются одновременно, поэтому конфигурация всегда согласована в объекте.
ПРИМЕЧАНИЕ. Если интервал обновления не прошел, обновление не будет выполнено и возвращено сразу.
Следующие шаги
В этом руководстве вы включили приложение Python для динамического обновления параметров конфигурации из Конфигурация приложений Azure. Чтобы узнать, как использовать управляемое удостоверение Azure для упрощения доступа к Конфигурация приложений Azure, перейдите к следующему руководству.