Python uygulamasında özellikleri hedeflenen hedef kitlelere sunma

Bu kılavuzda, Python uygulamanız için hedeflenen hedef kitlelere bir özellik dağıtacak bir hedefleme filtresi kullanacaksınız. Bu hedefleme filtresi hakkında daha fazla bilgi için bkz. Özellikleri hedeflenen hedef kitlelere dağıtma.

Önkoşullar

Özellik bayrağıyla web uygulaması oluşturma

Bu bölümde, bir web sayfasının beta sürümüne erişimi denetlemek için Beta özellik bayrağını kullanan bir web uygulaması oluşturacaksınız.

Python Flask projesi ayarlama

  1. adlı targeting-filter-tutorial bir klasör oluşturun ve klasörüne gidin.

    mkdir targeting-filter-tutorial
    cd targeting-filter-tutorial
    
  2. Bir sanal ortam oluşturun ve etkinleştirin.

    # For Windows
    python -m venv venv
    venv\Scripts\activate
    
    # For macOS/Linux
    python -m venv venv
    source venv/bin/activate
    
  3. Aşağıdaki paketleri yükleyin.

    pip install azure-appconfiguration-provider
    pip install azure-identity
    pip install featuremanagement
    pip install flask
    
  4. app.py adlı yeni bir dosya oluşturun ve aşağıdaki kodu ekleyin.

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

Azure Uygulama Yapılandırması'na bağlanma

  1. app.py güncelleştirin ve aşağıdaki kodu ekleyin.

    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)
    

    Özellik bayraklarını yüklemek, otomatik yenilemeyi etkinleştirmek ve daha sonra özellik bayraklarına erişmek için bir FeatureManager nesne oluşturmak için Azure Uygulama Yapılandırması'na bağlanırsınız. Dekoratör app.before_request yapılandırmanın her istek öncesinde yenilenmesini sağlar.

Özellik bayrağını kullanma

Flask uygulaması için bir yol işleyicisi oluşturmak için aşağıdaki kodu app.py dosyasına ekleyin. Uygulama , Beta özellik bayrağının etkinleştirilip etkinleştirilmediğine bağlı olarak farklı içeriklere hizmet eder.

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

Web uygulaması için hedeflemeyi etkinleştirme

Hedefleme etkin özellikleri değerlendirirken bir hedefleme bağlamı gereklidir. Python'da bir TargetingContext nesne oluşturmanız ve bunu is_enabled özellik yöneticisinin yöntemine geçirmeniz gerekir.

app.py dosyasını TargetingContext sınıfını içeri aktarmak ve ana rotada kullanmak için güncelleştirin:

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

Filtrelemeyi hedefleme işlemi

  1. AZURE_APPCONFIG_ENDPOINT adlı ortam değişkenini Azure portalındaki mağazanıza genel bakış bölümünde bulunan Uygulama Yapılandırma deponuzun uç noktasına ayarlayın.

    Windows komut istemini kullanıyorsanız, aşağıdaki komutu çalıştırın ve değişikliğin etkili olması için komut istemini yeniden başlatın:

    setx AZURE_APPCONFIG_ENDPOINT "<endpoint-of-your-app-configuration-store>"
    

    PowerShell kullanıyorsanız aşağıdaki komutu çalıştırın:

    $Env:AZURE_APPCONFIG_ENDPOINT = "<endpoint-of-your-app-configuration-store>"
    

    macOS veya Linux kullanıyorsanız aşağıdaki komutu çalıştırın:

    export AZURE_APPCONFIG_ENDPOINT='<endpoint-of-your-app-configuration-store>'
    
  2. Uygulamayı çalıştırın.

    python app.py
    
  3. Tarayıcınızı açın ve terminalinizde görüntülenen adrese gidin (varsayılan olarak). http://127.0.0.1:5000 Uygulamanın varsayılan görünümünü görmeniz gerekir.

    Varsayılan karşılama iletisini gösteren uygulamanın ekran görüntüsü.

  4. Kullanıcı kimliğini belirtmek için URL'ye sorgu parametresi olarak ekleyin userId . localhost:5000/?userId=test@contoso.comadresini ziyaret edin. Hedeflenen kullanıcı olarak belirtildiğinden test@contoso.com beta sayfasını görürsünüz.

    Beta sayfasını gösteren uygulamanın ekran görüntüsü.

  5. localhost:5000/?userId=testuser@contoso.comadresini ziyaret edin. Dışlanan kullanıcı olarak belirtildiğinden testuser@contoso.com beta sayfasını göremezsiniz.

    Varsayılan içeriği gösteren uygulamanın ekran görüntüsü.

Sonraki Adımlar

Özellik filtreleri hakkında daha fazla bilgi edinmek için aşağıdaki belgelere geçin.

Python Özellik Yönetimi kitaplığı hakkında daha fazla bilgi için aşağıdaki belgeye geçin.