Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Поставщик Python для Конфигурация приложений Azure имеет встроенные возможности кэширования и обновления. В этом руководстве показано, как включить динамическую конфигурацию в приложениях Python.
Предварительные требования
- Учетная запись Azure с активной подпиской. Создайте ее бесплатно.
- Хранилище Конфигурация приложений Azure. Создайте хранилище.
- Python 3.8 или более поздней версии. Для информации о настройке Python на Windows смотрите документацию Python on Windows.
Добавление ключевых значений
Добавьте следующее ключевое значение в хранилище Конфигурация приложений Azure. Дополнительные сведения о добавлении значений ключей в хранилище с помощью портал Azure или ИНТЕРФЕЙСА командной строки см. в разделе "Создание значения ключа".
| Ключ | значение | Метка | Тип контента |
|---|---|---|---|
| message | Всем привет! | Оставьте пустым | Оставьте пустым |
| sentinel | 1 | Оставьте пустым | Оставьте пустым |
Примечание.
Сторожевой ключ — это ключ, который вы обновляете после того, как завершите изменение всех остальных ключей. Ваше приложение отслеживает сторожевой ключ. При обнаружении изменения приложение обновляет все значения конфигурации. Этот подход помогает обеспечить согласованность конфигурации в приложении и сократить общее количество запросов, сделанных в хранилище Конфигурация приложений Azure, по сравнению с мониторингом всех ключей для изменений.
Консольные приложения
Создайте файл Python с именем app.py и добавьте следующий код:
Вы используете
DefaultAzureCredentialдля аутентификации в хранилище App Configuration. Следуйте инструкциям, чтобы назначить вашим учетным данным роль App Configuration Data Reader. Перед запуском приложения обязательно предоставьте достаточно времени для распространения разрешения.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.
Ключ значение Метка Тип контента message Hello World Refreshed! Оставьте пустым Оставьте пустым sentinel 2 Оставьте пустым Оставьте пустым После обновления значений и прохождения интервала обновления появляется обновленное значение.
Hello World Refreshed!
Веб-приложения
В следующем примере показано, как обновить существующее веб-приложение для использования обновляемых значений конфигурации. Функцию обратного вызова можно передать в качестве именованного аргумента on_refresh_success функции load. Этот обратный вызов будет вызываться при обнаружении изменения конфигурации на сервере, и его можно использовать для обновления значений конфигурации в приложении.
В разделе 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, перейдите к следующему руководству.