Implementación de características para audiencias dirigidas en una aplicación de Python

En esta guía, usará un filtro de selección de destino a fin de implementar una característica para públicos de destino para la aplicación Node.js. Para más información sobre el filtro de destino, vea Implementación de características en públicos de destino.

Prerrequisitos

Creación de una aplicación web con una marca de característica

En esta sección, creará una aplicación web que use la marca de característica Beta para controlar el acceso a la versión beta de una página web.

Configuración de un proyecto de Python Flask

  1. Cree una carpeta llamada targeting-filter-tutorial y vaya a ella.

    mkdir targeting-filter-tutorial
    cd targeting-filter-tutorial
    
  2. Cree un entorno virtual y actívelo.

    # For Windows
    python -m venv venv
    venv\Scripts\activate
    
    # For macOS/Linux
    python -m venv venv
    source venv/bin/activate
    
  3. Instale los siguientes paquetes.

    pip install azure-appconfiguration-provider
    pip install azure-identity
    pip install featuremanagement
    pip install flask
    
  4. Cree un nuevo archivo denominado app.py y agregue el código siguiente.

    from flask import Flask
    
    app = Flask(__name__)
    
    if __name__ == "__main__":
        app.run(debug=True)
    

Conexión a Azure App Configuration

  1. Actualice app.py y agregue el código siguiente.

    from flask import Flask
    import os
    from azure.identity import DefaultAzureCredential
    from azure.appconfiguration.provider import load
    from featuremanagement import FeatureManager
    
    app = Flask(__name__)
    
    # Get the App Configuration endpoint from environment variables
    app_config_endpoint = os.environ.get("AZURE_APPCONFIG_ENDPOINT")
    
    # Declare App Configuration and feature manager variables
    azure_app_config = None
    feature_manager = None
    
    def initialize_config():
        global azure_app_config, feature_manager
        # Load feature flags from App Configuration
        azure_app_config = load(
            endpoint=app_config_endpoint,
            credential=DefaultAzureCredential(),
            feature_flag_enabled=True,
            feature_flag_refresh_enabled=True
        )
    
        # Create a feature manager with the loaded configuration
        feature_manager = FeatureManager(azure_app_config)
    
    # Flask route before the request to refresh configuration
    @app.before_request
    def refresh_config():
        if azure_app_config:
            azure_app_config.refresh()
    
    if __name__ == "__main__":
        # Initialize configuration before starting the app
        initialize_config()
    
        app.run(debug=True)
    

    Se conecta a Azure App Configuration para cargar marcas de características, habilitar la actualización automática y crear un FeatureManager objeto para acceder a las marcas de características más adelante. El app.before_request decorador garantiza que la configuración se actualice antes de cada solicitud.

Uso de la marca de características

Agregue el código siguiente al archivo app.py antes de la función principal para crear un controlador de ruta para la aplicación Flask. La aplicación sirve contenido diferente en función de si la marca de características beta está habilitada.

@app.route("/")
def home():
    is_beta_enabled = feature_manager.is_enabled("Beta")

    title = "Home Page"
    message = "Welcome."

    if is_beta_enabled:
        title = "Beta Page"
        message = "This is a beta page."
    
    return f"""
    <!DOCTYPE html>
    <html>
        <head><title>{title}</title></head>
        <body style="display: flex; justify-content: center; align-items: center; min-height: 100vh; margin: 0;">
            <h1 style="text-align: center; font-size: 5rem;">{message}</h1>
        </body>
    </html>
    """

Habilitación de la selección de destino para la aplicación web

Se requiere un contexto de segmentación al evaluar las funciones con la segmentación habilitada. En Python, debe crear un TargetingContext objeto y pasarlo al is_enabled método del administrador de características.

Actualice el archivo app.py para importar la TargetingContext clase y úsela en la ruta principal:

from flask import Flask, request
from featuremanagement import FeatureManager, TargetingContext

...

@app.route("/")
def home():
    # Get targeting context from query parameters
    user_id = request.args.get("userId", "")
    groups_param = request.args.get("groups", "")
    groups = groups_param.split(",") if groups_param else []

    targeting_context = TargetingContext(user_id=user_id, groups=groups)
    is_beta_enabled = feature_manager.is_enabled("Beta", targeting_context)
    

    title = "Home Page"
    message = "Welcome."

    if is_beta_enabled:
        title = "Beta Page"
        message = "This is a beta page."

    
    return f"""
    <!DOCTYPE html>
    <html>
        <head><title>{title}</title></head>
        <body style="display: flex; justify-content: center; align-items: center; min-height: 100vh; margin: 0;">
            <h1 style="text-align: center; font-size: 5rem;">{message}</h1>
        </body>
    </html>
    """

if __name__ == "__main__":
    # Initialize configuration before starting the app
    initialize_config()

    app.run(debug=True)

Filtro de selección de destino en acción

  1. Establezca la variable de entorno denominada AZURE_APPCONFIG_ENDPOINT en el punto de conexión del almacén de App Configuration que se encuentra en la Información general del almacén en Azure Portal.

    Si usa el símbolo del sistema de Windows, ejecute el siguiente comando y reinícielo para que se aplique el cambio:

    setx AZURE_APPCONFIG_ENDPOINT "<AppConfigurationEndpoint>"
    

    Si usa PowerShell, ejecute el siguiente comando:

    $Env:AZURE_APPCONFIG_ENDPOINT = "<AppConfigurationEndpoint>"
    

    Si usa macOS o Linux, ejecute el siguiente comando:

    export AZURE_APPCONFIG_ENDPOINT='<AppConfigurationEndpoint>'
    
  2. Ejecute la aplicación.

    python app.py
    
  3. Abra el explorador y vaya a la dirección que se muestra en el terminal (de forma predeterminada, http://127.0.0.1:5000). Debería ver la vista predeterminada de la aplicación.

    Captura de pantalla de la aplicación, en la que se muestra el mensaje de saludo predeterminado.

  4. Agregue userId como parámetro de consulta en la dirección URL para especificar el identificador de usuario. Visite localhost:5000/?userId=test@contoso.com. Verá la página beta, porque test@contoso.com se especifica como un usuario objetivo.

    Captura de pantalla de la aplicación, en la que se muestra la página beta.

  5. Visite localhost:5000/?userId=testuser@contoso.com. No puede ver la página beta, ya que testuser@contoso.com se especifica como un usuario excluido.

    Captura de pantalla de la aplicación, en la que se muestra el contenido predeterminado.

Pasos siguientes

Para más información sobre los filtros de características, continúe con los siguientes documentos.

Para obtener más información sobre la biblioteca de administración de características de Python, continúe con el siguiente documento.