Поделиться через


Руководство. Использование динамической конфигурации в Python

Поставщик Конфигурация приложений Azure Python включает встроенные возможности кэширования и обновления. В этом руководстве показано, как включить динамическую конфигурацию в приложениях Python.

Необходимые компоненты

Добавление ключевых значений

Добавьте следующее ключевое значение в хранилище Конфигурация приложений Azure. Дополнительные сведения о добавлении значений ключей в хранилище с помощью портал Azure или ИНТЕРФЕЙСА командной строки см. в разделе "Создание значения ключа".

Ключ значение Этикетка Content type
message Hello World! Оставьте пустым Оставьте пустым
sentinel 1 Оставьте пустым Оставьте пустым

Примечание.

Ключ sentinel — это ключ , который вы обновляете после завершения изменения всех остальных ключей. Приложение отслеживает ключ sentinel. При обнаружении изменения приложение обновляет все значения конфигурации. Этот подход помогает обеспечить согласованность конфигурации в приложении и сократить общее количество запросов, сделанных в хранилище Конфигурация приложений Azure, по сравнению с мониторингом всех ключей для изменений.

Консольные приложения

  1. Создайте файл Python с именем app.py и добавьте следующий код:

    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)
    
  2. Запустите скрипт:

    python app.py
    
  3. Проверьте выходные данные:

    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!
    
  4. Обновите следующие ключевые значения в хранилище Конфигурация приложений Azure.

    Ключ значение Этикетка Content type
    message Hello World Refreshed! Оставьте пустым Оставьте пустым
    sentinel 2 Оставьте пустым Оставьте пустым
  5. После обновления обновленных значений будет выводиться после прохождения интервала обновления.

    Hello World Refreshed!
    

Веб-приложения

В следующем примере показано, как обновить существующее веб-приложение для использования обновляемых значений конфигурации. Обратный вызов можно предоставить on_refresh_success ключевое слово аргументу load функции. Этот обратный вызов будет вызываться при обнаружении изменения конфигурации на сервере, и его можно использовать для обновления значений конфигурации в приложении.

Настройте app.pyКонфигурация приложений Azure для загрузки значений конфигурации. Затем обновите конечные точки, чтобы проверка для обновленных значений конфигурации.

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)

Обновите шаблон 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, перейдите к следующему руководству.