Бөлісу құралы:


Краткое руководство. Добавление флагов функций в приложение Python

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

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

Эта библиотека не зависит от библиотек Azure. Они легко интегрируются с Конфигурация приложений через своего поставщика конфигурации Python.

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

Добавление флага компонента

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

Снимок экрана: флаг включения функции с именем Beta.

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

  1. Установите управление функциями pip install с помощью команды.

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

    from featuremanagement import FeatureManager
    from azure.identity import InteractiveBrowserCredential
    from azure.appconfiguration.provider import load
    import os
    from time import sleep
    
    endpoint = os.environ["APP_CONFIGURATION_ENDPOINT"]
    
    # Connecting to Azure App Configuration using an endpoint
    # credential is used to authenticate the client, the InteractiveBrowserCredential is used for this sample. It will open a browser window to authenticate the user. For all credential options see [credential classes](https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/identity/azure-identity#credential-classes).
    # feature_flag_enabled makes it so that the provider will load feature flags from Azure App Configuration
    # feature_flag_refresh_enabled makes it so that the provider will refresh feature flags from Azure App Configuration, when the refresh operation is triggered
    config = load(endpoint=endpoint, credential=InteractiveBrowserCredential(), feature_flag_enabled=True, feature_flag_refresh_enabled=True)
    
    feature_manager = FeatureManager(config)
    
    # Is always false
    print("Beta is ", feature_manager.is_enabled("Beta"))
    
    while not feature_manager.is_enabled("Beta"):
        sleep(5)
        config.refresh()
    
    print("Beta is ", feature_manager.is_enabled("Beta"))
    

При запуске приложения откроется окно браузера для проверки подлинности пользователя. Пользователь должен иметь по крайней мере роль для доступа к хранилищу Конфигурация приложений, см. Конфигурация приложений App Configuration Data Reader роли для получения дополнительных сведений.

  1. Задайте переменную среды с именем APP_CONFIGURATION_ENDPOINT и установите ее в конечную точку в хранилище Конфигурация приложений. В командной строке выполните следующую команду и перезапустите командную строку, чтобы изменения вступили в силу:

    Чтобы выполнить сборку и запуск приложения локально с помощью командной строки Windows, выполните следующую команду:

    setx APP_CONFIGURATION_ENDPOINT "endpoint-of-your-app-configuration-store"
    

    Перезапустите командную строку, чтобы изменение вступило в силу. Убедитесь, что он правильно задан, распечатав значение переменной среды.

  2. Запустите приложение Python.

    python app.py
    
  3. На портале Конфигурация приложений выберите диспетчер компонентов и измените состояние флага бета-функции на "Вкл." с помощью переключателя в столбце "Включено".

    Ключ Штат
    Бета-версия Вкл
  4. После 30-х, который является интервалом обновления для поставщика, приложение будет выводить следующее:

    Beta is True
    

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

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

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

from featuremanagement import FeatureManager

...

global azure_app_config, feature_manager
# Connecting to Azure App Configuration using an endpoint
# credential is used to authenticate the client, the InteractiveBrowserCredential is used for this sample. It will open a browser window to authenticate the user. For all credential options see [credential classes](https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/identity/azure-identity#credential-classes).
# feature_flag_enabled makes it so that the provider will load feature flags from Azure App Configuration
# feature_flag_refresh_enabled makes it so that the provider will refresh feature flags from Azure App Configuration, when the refresh operation is triggered
azure_app_config = load(endpoint=endpoint, credential=InteractiveBrowserCredential(),
                        refresh_on=[WatchKey("sentinel")],
                        on_refresh_success=on_refresh_success,
                        refresh_interval=10, # Default value is 30 seconds, shortened for this sample
                        feature_flag_enabled=True,
                        feature_flag_refresh_enabled=True,
                    )
feature_manager = FeatureManager(config)

Также обновите маршруты, чтобы проверить наличие обновленных флагов компонентов.

@app.route("/")
def index():
    ...
    context["message"] = azure_app_config.get("message")
    context["beta"] = feature_manager.is_enabled("Beta")
    ...

Обновите шаблон index.html , чтобы использовать новые флаги компонентов.

...

<body>
  <main>
    <div>
      <h1>{{message}}</h1>
      {% if beta %}
      <h2>Beta is enabled</h2>
      {% endif %}
    </div>
  </main>
</body>

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

Снимок экрана: включение бета-версии флага компонентов.

Полный пример проекта можно найти здесь.

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

После завершения обновления все значения обновляются одновременно, поэтому конфигурация всегда согласована в объекте.

Очистка ресурсов

Если вы не планируете в дальнейшем использовать ресурсы, созданные при работе с этой статьей, удалите созданную группу ресурсов, чтобы избежать расходов.

Внимание

Удаление группы ресурсов — процесс необратимый. Группа ресурсов и все содержащиеся в ней ресурсы удаляются без возможности восстановления. Будьте внимательны, чтобы случайно не удалить не те ресурсы или группу ресурсов. Если ресурсы для работы с этой статьей созданы в группе ресурсов, которая содержит другие нужные ресурсы, удалите каждый ресурс отдельно в соответствующей области ресурса, чтобы не удалять группу ресурсов.

  1. Войдите на портал Azure и выберитеГруппы ресурсов.
  2. Введите имя группы ресурсов в поле Фильтровать по имени.
  3. В списке результатов выберите имя группы ресурсов, чтобы просмотреть общие сведения.
  4. Выберите команду Удалить группу ресурсов.
  5. Подтвердите операцию удаления группы ресурсов. Введите имя группы ресурсов, которую необходимо удалить, и нажмите Удалить.

Через некоторое время группа ресурсов и все ее ресурсы будут удалены.

Следующие шаги

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