Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Neste guia, você usa um filtro de segmentação para implementar um recurso para públicos-alvo para seu aplicativo Python. Para obter mais informações sobre esse filtro de segmentação, consulte Implantar recursos para públicos-alvo.
Pré-requisitos
- Uma conta do Azure com uma assinatura ativa. Crie um gratuitamente.
- Uma loja de configuração de aplicativos, conforme mostrado no tutorial para criar uma loja.
- Um flag de funcionalidade Beta com filtro de segmentação. Crie o sinalizador de recurso.
- Python 3.8 ou posterior.
Criar um aplicativo Web com um sinalizador de recurso
Nesta seção, você cria um aplicativo Web que usa o sinalizador de recurso Beta para controlar o acesso à versão beta de uma página da Web.
Configurar um projeto Python Flask
Crie uma pasta chamada
targeting-filter-tutoriale navegue até ela.mkdir targeting-filter-tutorial cd targeting-filter-tutorialCrie um ambiente virtual e ative-o.
# For Windows python -m venv venv venv\Scripts\activate # For macOS/Linux python -m venv venv source venv/bin/activateInstale os seguintes pacotes.
pip install azure-appconfiguration-provider pip install azure-identity pip install featuremanagement pip install flaskCrie um novo arquivo chamado app.py e adicione o código a seguir.
from flask import Flask app = Flask(__name__) if __name__ == "__main__": app.run(debug=True)
Conectar-se à Configuração do Aplicativo do Azure
Atualize app.py e adicione o código a seguir.
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)Você se conecta à Configuração do Aplicativo do Azure para carregar sinalizadores de recursos, habilitar a atualização automática e criar um
FeatureManagerobjeto para acessar sinalizadores de recursos posteriormente. Oapp.before_requestdecorador garante que a configuração seja atualizada antes de cada solicitação.
Utilize o sinalizador de funcionalidade
Adicione o seguinte código ao ficheiro app.py antes da função principal para criar um gestor de rotas para a aplicação Flask. A aplicação apresenta conteúdos diferentes consoante a flag de funcionalidade Beta estar ou não ativada.
@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>
"""
Habilitar a segmentação para o aplicativo Web
Um contexto de segmentação é necessário ao avaliar recursos com a segmentação habilitada. Em Python, você precisa criar um TargetingContext objeto e passá-lo para o is_enabled método do gerenciador de recursos.
Atualize o arquivo app.py para importar a TargetingContext classe e usá-la na rota inicial:
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 direcionamento em ação
Defina a variável de ambiente chamada AZURE_APPCONFIG_ENDPOINT para o ponto de extremidade da sua loja de Configuração de Aplicativos encontrado em Visão geral da sua loja no portal do Azure.
Se você usar o prompt de comando do Windows, execute o seguinte comando e reinicie o prompt de comando para permitir que a alteração entre em vigor:
setx AZURE_APPCONFIG_ENDPOINT "<AppConfigurationEndpoint>"Se você usar o PowerShell, execute o seguinte comando:
$Env:AZURE_APPCONFIG_ENDPOINT = "<AppConfigurationEndpoint>"Se você usa macOS ou Linux, execute o seguinte comando:
export AZURE_APPCONFIG_ENDPOINT='<AppConfigurationEndpoint>'Execute o aplicativo.
python app.pyAbra o navegador e navegue até o endereço exibido no terminal (por padrão, http://127.0.0.1:5000). Você deve ver a visualização padrão do aplicativo.
Adicione
userIdcomo um parâmetro de consulta na URL para especificar o ID do usuário. Visitelocalhost:5000/?userId=test@contoso.com. Você vê a página beta, porquetest@contoso.comé especificado como um usuário alvo.
Visite
localhost:5000/?userId=testuser@contoso.com. Você não pode ver a página beta, porquetestuser@contoso.comé especificado como um usuário excluído.
Próximos passos
Para saber mais sobre filtros de recursos, consulte os documentos seguintes.
Para obter mais informações sobre a biblioteca Python Feature Management, continue para o seguinte documento.