Inicio rápido: Adición de marcas de características a una aplicación de Python (versión preliminar)

En este inicio rápido, creará una marca de características en Azure App Configuration y la usará para controlar dinámicamente las aplicaciones de Python para crear una implementación de un extremo a otro de la administración de características.

La compatibilidad con la administración de características amplía la característica de configuración dinámica en App Configuration. Estos ejemplos de la guía de inicio rápido se basan en las aplicaciones Ppython introducidas en el tutorial de configuración dinámica. Antes de continuar, finalice el inicio rápido y el tutorial para crear primero aplicaciones de Python con configuración dinámica.

Esta biblioteca no tiene ninguna dependencia en ninguna biblioteca de Azure. Se integran sin problemas con App Configuration mediante su proveedor de configuración de Python.

Requisitos previos

Agregar marca de características

Agregue una marca de característica denominada Beta al almacén de App Configuration y deje Etiqueta y descripción con sus valores predeterminados. Para obtener más información sobre cómo agregar marcas de características a un almacén mediante Azure Portal o la CLI, vaya a Creación de una marca de característica. En esta fase, la casilla Habilitar marca de característica debe desactivarse.

Captura de pantalla de la marca de características habilitada denominada Beta.

Aplicaciones de consola

  1. Instale la Administración de características mediante el comando pip install.

    pip install featuremanagement
    
  2. Cree un nuevo archivo de Python llamado app.py y agregue el código siguiente:

    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"))
    

Al iniciar la aplicación, se abrirá una ventana del explorador para autenticar al usuario. El usuario debe tener al menos el rol de App Configuration Data Reader para acceder al almacén de App Configuration, consulte roles de App Configuration para obtener más información.

  1. Establezca una variable de entorno denominada APP_CONFIGURATION_ENDPOINT y establézcala en el punto de conexión en el almacén de App Configuration. En la línea de comandos, ejecute el siguiente comando y reinicie el símbolo del sistema para que se aplique el cambio:

    Para compilar y ejecutar la aplicación de forma local mediante el símbolo del sistema de Windows, ejecute el siguiente comando:

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

    Reinicie el símbolo del sistema para permitir que el cambio surta efecto. Compruebe que se establece correctamente imprimiendo el valor de la variable de entorno.

  2. Ejecute la aplicación de Python.

    python app.py
    
  3. En el portal de App Configuration, seleccione Administrador de características y cambie el estado de la marca de características Beta a Activada, con el botón de alternancia en la columna Habilitada.

    Clave State
    Beta Activado
  4. Después de unos 30 segundos, que es el intervalo de actualización del proveedor, la aplicación imprimirá lo siguiente:

    Beta is True
    

Aplicaciones web

En el ejemplo siguiente se muestra cómo actualizar una aplicación web existente mediante Azure App Configuration con actualización dinámica para usar también marcas de características. Consulte Configuración dinámica de Python para obtener un ejemplo más detallado de cómo usar la actualización dinámica para los valores de configuración. Antes de continuar, asegúrese de que tiene habilitada la marca de características Beta en el almacén de App Configuration.

En app.py, configure el método de carga de Azure App Configuration para cargar además las marcas de características, junto con la habilitación de la actualización de las marcas de características.

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)

Actualice también las rutas para comprobar si hay marcas de características actualizadas.

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

Actualice la plantilla index.html para usar las nuevas marcas de características.

...

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

Una vez que haya actualizado y ejecutado la aplicación, puede ver la marca de características en acción, donde aparecerá el mensaje Beta is enabled en la página, pero solo si la marca de características está habilitada en el almacén de App Configuration.

Captura de pantalla de la opción habilitar la marca de característica beta habilitada.

Puede encontrar un proyecto de ejemplo completo aquí.

Cada vez que se desencadenan estos puntos de conexión, se puede realizar una comprobación de actualización para asegurarse de que se usan los valores de configuración más recientes. La comprobación puede devolverse inmediatamente si el intervalo de actualización aún no se ha superado o si ya hay una actualización en curso.

Cuando se completa una actualización, todos los valores se actualizan a la vez, por lo que la configuración siempre es coherente dentro del objeto.

Limpieza de recursos

Si no quiere seguir usando los recursos que se han creado en este artículo, elimine el grupo de recursos que creó aquí para evitar cargos.

Importante

La eliminación de un grupo de recursos es irreversible. El grupo de recursos y todos los recursos que contiene se eliminan permanentemente. Asegúrese de que no elimina por accidente el grupo de recursos o los recursos equivocados. Si creó los recursos para este artículo en un grupo de recursos que contenga los recursos que desee conservar, elimine cada recurso de forma individual desde su panel respectivo, en lugar de eliminar el grupo de recursos.

  1. Inicie sesión en Azure Portal y después seleccione Grupos de recursos.
  2. En el cuadro de texto Filtrar por nombre, escriba el nombre del grupo de recursos.
  3. En la lista resultados, seleccione el nombre del grupo de recursos para ver la información general.
  4. Seleccione Eliminar grupo de recursos.
  5. Se le pedirá que confirme la eliminación del grupo de recursos. Escriba el nombre del grupo de recursos para confirmar y seleccione Eliminar.

Transcurridos unos instantes, el grupo de recursos y todos sus recursos se eliminan.

Pasos siguientes

En este inicio rápido, ha creado un almacén de App Configuration y lo ha usado para administrar características en una aplicación de Python mediante la biblioteca de administración de características.