Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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
- Aktif bir aboneliğe sahip bir Azure hesabı. Ücretsiz bir tane oluşturun.
- Mağaza oluşturma öğreticisinde gösterildiği gibi bir Uygulama Yapılandırma deposu.
- Hedefleme filtresine sahip bir Beta özellik bayrağı. Özellik bayrağını oluşturun.
- Python 3.8 veya üzeri.
Ö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
adlı
targeting-filter-tutorialbir klasör oluşturun ve klasörüne gidin.mkdir targeting-filter-tutorial cd targeting-filter-tutorialBir 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/activateAşağıdaki paketleri yükleyin.
pip install azure-appconfiguration-provider pip install azure-identity pip install featuremanagement pip install flaskapp.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
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
FeatureManagernesne oluşturmak için Azure Uygulama Yapılandırması'na bağlanırsınız. Dekoratörapp.before_requestyapı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
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>'Uygulamayı çalıştırın.
python app.pyTarayı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.
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ğindentest@contoso.combeta sayfasını görürsünüz.
localhost:5000/?userId=testuser@contoso.comadresini ziyaret edin. Dışlanan kullanıcı olarak belirtildiğindentestuser@contoso.combeta sayfasını göremezsiniz.
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.