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

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

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

Библиотека управления функциями не зависит от библиотек Azure. Он интегрируется с App Configuration через провайдера конфигурации Python.

Предварительные требования

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

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

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

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

  1. Установите компонент Feature Management с помощью команды 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, чтобы получить доступ к хранилищу App Configuration; дополнительные сведения см. в разделе Роли App Configuration.

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

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

    setx APP_CONFIGURATION_ENDPOINT "<AppConfigurationEndpoint>"
    

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

  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, но только если этот флаг функции включен в хранилище App Configuration.

Снимок экрана, на котором бета-флаг функции включен.

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

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

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

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

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

Внимание

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

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

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

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

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