Bereitstellen von Features für Zielgruppen in einer Python-Anwendung

In diesem Handbuch verwenden Sie einen Zielfilter, um ein Feature für Zielgruppen für Ihre Python-Anwendung bereitstellen zu können. Weitere Informationen zu diesem Zielfilter finden Sie unter Bereitstellen von Features für Zielgruppen.

Voraussetzungen

Erstellen einer Webanwendung mit einem Featureflag

In diesem Abschnitt erstellen Sie eine Webanwendung, die das Betafeature-Flag verwendet, um den Zugriff auf die Betaversion einer Webseite zu steuern.

Einrichten eines Python Flask-Projekts

  1. Erstellen Sie einen Ordner namens targeting-filter-tutorial und navigieren Sie zu diesem.

    mkdir targeting-filter-tutorial
    cd targeting-filter-tutorial
    
  2. Erstellen Sie eine virtuelle Umgebung, und aktivieren Sie sie.

    # For Windows
    python -m venv venv
    venv\Scripts\activate
    
    # For macOS/Linux
    python -m venv venv
    source venv/bin/activate
    
  3. Installieren Sie die folgenden Pakete.

    pip install azure-appconfiguration-provider
    pip install azure-identity
    pip install featuremanagement
    pip install flask
    
  4. Erstellen Sie eine neue Datei mit dem Namen app.py , und fügen Sie den folgenden Code hinzu.

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

Herstellen einer Verbindung mit der Azure-App-Konfiguration

  1. Aktualisieren Sie app.py , und fügen Sie den folgenden Code hinzu.

    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)
    

    Sie stellen eine Verbindung mit der Azure App-Konfiguration her, um Featurekennzeichnungen zu laden, die automatische Aktualisierung zu aktivieren und später ein FeatureManager Objekt für den Zugriff auf Featurekennzeichnungen zu erstellen. Der app.before_request Dekorateur stellt sicher, dass die Konfiguration vor jeder Anforderung aktualisiert wird.

Verwenden des Featureflags

Fügen Sie der datei app.py vor der Hauptfunktion den folgenden Code hinzu, um einen Routenhandler für die Flask-Anwendung zu erstellen. Die Anwendung zeigt unterschiedliche Inhalte an, je nachdem, ob das Beta-Funktionsflag aktiviert ist.

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

Aktivieren der Zielbestimmung für die Webanwendung

Ein Zielkontext ist erforderlich, wenn Features mit aktivierter Zielbestimmung ausgewertet werden. In Python müssen Sie ein TargetingContext Objekt erstellen und an die is_enabled Methode des Feature-Managers übergeben.

Aktualisieren Sie die app.py Datei, um die TargetingContext Klasse zu importieren und in der Startroute zu verwenden:

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)

Zielfilter in Aktion

  1. Legen Sie die Umgebungsvariable namens AZURE_APPCONFIG_ENDPOINT auf den Endpunkt Ihres App-Konfigurationsspeichers fest, der unter der Übersicht über Ihren Store im Azure-Portal zu finden ist.

    Führen Sie bei Verwendung einer Windows-Eingabeaufforderung den folgenden Befehl aus, und starten Sie die Eingabeaufforderung neu, damit die Änderung wirksam wird:

    setx AZURE_APPCONFIG_ENDPOINT "<AppConfigurationEndpoint>"
    

    Wenn Sie PowerShell verwenden, führen Sie den folgenden Befehl aus:

    $Env:AZURE_APPCONFIG_ENDPOINT = "<AppConfigurationEndpoint>"
    

    Führen Sie bei Verwendung von macOS oder Linux den folgenden Befehl aus:

    export AZURE_APPCONFIG_ENDPOINT='<AppConfigurationEndpoint>'
    
  2. Führen Sie die Anwendung aus.

    python app.py
    
  3. Öffnen Sie Ihren Browser, und navigieren Sie zu der Adresse, die in Ihrem Terminal angezeigt wird (standardmäßig). http://127.0.0.1:5000 Die Standardansicht der App sollte angezeigt werden.

    Screenshot der App mit der Standardmäßigen Begrüßungsnachricht.

  4. Fügen Sie userId als Abfrageparameter in der URL hinzu, um die Benutzer-ID anzugeben. Besuchen Sie localhost:5000/?userId=test@contoso.com. Sie sehen die Betaseite, weil test@contoso.com als Zielbenutzer angegeben ist.

    Screenshot der App mit der Betaseite

  5. Besuchen Sie localhost:5000/?userId=testuser@contoso.com. Die Betaseite kann nicht angezeigt werden, da testuser@contoso.com als ausgeschlossener Benutzer angegeben ist.

    Screenshot der App mit dem Standardinhalt.

Nächste Schritte

Wenn Sie mehr über Featurefilter erfahren möchten, fahren Sie mit den folgenden Dokumenten fort.

Weitere Informationen zur Python Feature Management-Bibliothek finden Sie im folgenden Dokument.