Quickstart: Functievlagken toevoegen aan een Python-app
In deze quickstart maakt u een functievlag in Azure-app Configuratie en gebruikt u deze om Python-apps dynamisch te beheren om een end-to-end implementatie van functiebeheer te maken.
De ondersteuning voor functiebeheer breidt de dynamische configuratiefunctie in App Configuration uit. Deze voorbeelden in de quickstart bouwen voort op dePpython-apps die zijn geïntroduceerd in de zelfstudie voor dynamische configuratie. Voordat u doorgaat, voltooit u de quickstart en de zelfstudie om eerst Python-apps te maken met dynamische configuratie.
Deze bibliotheek heeft geen afhankelijkheid van Azure-bibliotheken. Ze integreren naadloos met App Configuration via de Python-configuratieprovider.
Vereisten
- Een Azure-account met een actief abonnement. Maak gratis een account.
- Een App Configuration-archief. Een winkel maken.
- Python 3.8 of hoger: zie de Python in Windows-documentatie voor meer informatie over het instellen van Python in Windows, anders worden Python-downloads weergegeven.
- azure-appconfiguration-provider library 1.2.0 of hoger.
Een functievlag toevoegen
Voeg een functievlag met de naam Beta toe aan het App Configuration-archief en laat label en beschrijving ongewijzigd met de standaardwaarden. Ga naar Een functievlag maken voor meer informatie over het toevoegen van functievlagmen aan een winkel met behulp van Azure Portal of de CLI. In deze fase moet het selectievakje Functievlag inschakelen zijn uitgeschakeld.
Consoletoepassingen
Installeer Functiebeheer met behulp van de
pip install
opdracht.pip install featuremanagement
Maak een nieuw Python-bestand met de naam
app.py
en voeg de volgende code toe:from featuremanagement import FeatureManager from azure.identity import InteractiveBrowserCredential from azure.appconfiguration.provider import load import os from time import sleep endpoint = os.environ["APP_CONFIGURATION_ENDPOINT"] # Connecting to Azure App Configuration using an endpoint # credential is used to authenticate the client, the InteractiveBrowserCredential is used for this sample. It will open a browser window to authenticate the user. For all credential options see [credential classes](https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/identity/azure-identity#credential-classes). # feature_flag_enabled makes it so that the provider will load feature flags from Azure App Configuration # feature_flag_refresh_enabled makes it so that the provider will refresh feature flags from Azure App Configuration, when the refresh operation is triggered config = load(endpoint=endpoint, credential=InteractiveBrowserCredential(), feature_flag_enabled=True, feature_flag_refresh_enabled=True) feature_manager = FeatureManager(config) # Is always false print("Beta is ", feature_manager.is_enabled("Beta")) while not feature_manager.is_enabled("Beta"): sleep(5) config.refresh() print("Beta is ", feature_manager.is_enabled("Beta"))
Wanneer u de toepassing start, wordt er een browservenster geopend om de gebruiker te verifiëren. De gebruiker moet ten minste de App Configuration Data Reader
rol hebben om toegang te krijgen tot het App Configuration-archief. Zie App Configuration-rollen voor meer informatie.
Stel een omgevingsvariabele in met de naam APP_CONFIGURATION_ENDPOINT en stel deze in op het eindpunt in uw App Configuration-archief. Voer op de opdrachtregel de volgende opdracht uit en start de opdrachtprompt opnieuw op om de wijziging door te voeren:
Voer de volgende opdracht uit om de app lokaal te bouwen en uit te voeren met behulp van de Windows-opdrachtprompt:
setx APP_CONFIGURATION_ENDPOINT "endpoint-of-your-app-configuration-store"
Start de opdrachtprompt opnieuw op om de wijziging door te voeren. Controleer of deze juist is ingesteld door de waarde van de omgevingsvariabele af te drukken.
Voer de Python-toepassing uit.
python app.py
Selecteer Functiebeheer in de App Configuration-portal en wijzig de status van de bètafunctievlag in Aan met behulp van de wisselknop in de kolom Ingeschakeld.
Sleutel Provincie Bèta Uit Na ongeveer 30, het vernieuwingsinterval voor de provider, wordt het volgende afgedrukt:
Beta is True
Webtoepassingen
In het volgende voorbeeld ziet u hoe u een bestaande webtoepassing bijwerkt met behulp van Azure-app Configuratie met dynamische vernieuwing om ook functievlagmen te gebruiken. Zie Dynamische configuratie van Python voor een gedetailleerder voorbeeld van het gebruik van dynamische vernieuwing voor configuratiewaarden. Voordat u doorgaat, moet u ervoor zorgen dat de bètafunctievlag is ingeschakeld in uw App Configuration-archief.
Stel in app.py
Azure-app Configuratie de laadmethode in om functievlagmen extra te laden, samen met het inschakelen van het vernieuwen van functievlagmen.
from featuremanagement import FeatureManager
...
global azure_app_config, feature_manager
# Connecting to Azure App Configuration using an endpoint
# credential is used to authenticate the client, the InteractiveBrowserCredential is used for this sample. It will open a browser window to authenticate the user. For all credential options see [credential classes](https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/identity/azure-identity#credential-classes).
# feature_flag_enabled makes it so that the provider will load feature flags from Azure App Configuration
# feature_flag_refresh_enabled makes it so that the provider will refresh feature flags from Azure App Configuration, when the refresh operation is triggered
azure_app_config = load(endpoint=endpoint, credential=InteractiveBrowserCredential(),
refresh_on=[WatchKey("sentinel")],
on_refresh_success=on_refresh_success,
refresh_interval=10, # Default value is 30 seconds, shortened for this sample
feature_flag_enabled=True,
feature_flag_refresh_enabled=True,
)
feature_manager = FeatureManager(config)
Werk ook uw routes bij om te controleren op bijgewerkte functievlagmen.
@app.route("/")
def index():
...
context["message"] = azure_app_config.get("message")
context["beta"] = feature_manager.is_enabled("Beta")
...
Werk uw sjabloon index.html
bij om de nieuwe functievlagmen te gebruiken.
...
<body>
<main>
<div>
<h1>{{message}}</h1>
{% if beta %}
<h2>Beta is enabled</h2>
{% endif %}
</div>
</main>
</body>
Zodra u uw toepassing hebt bijgewerkt en uitgevoerd, kunt u de functievlag in actie zien, waar het Beta is enabled
bericht op de pagina wordt weergegeven, maar alleen als de functievlag is ingeschakeld in het App Configuration-archief.
Wanneer deze eindpunten worden geactiveerd, kan er een vernieuwingscontrole worden uitgevoerd om ervoor te zorgen dat de meest recente configuratiewaarden worden gebruikt. De controle kan onmiddellijk worden geretourneerd als het vernieuwingsinterval nog moet worden doorgegeven of als er al een vernieuwing wordt uitgevoerd.
Wanneer een vernieuwing is voltooid, worden alle waarden in één keer bijgewerkt, zodat de configuratie altijd consistent is binnen het object.
Resources opschonen
Als u de resources die in dit artikel zijn gemaakt niet wilt blijven gebruiken, verwijdert u de resourcegroep die u hier hebt gemaakt om kosten te voorkomen.
Belangrijk
Het verwijderen van een resourcegroep kan niet ongedaan worden gemaakt. De resourcegroep en alle resources daarin worden permanent verwijderd. Zorg ervoor dat u niet per ongeluk de verkeerde resourcegroep of resources verwijdert. Als u de resources voor dit artikel in een resourcegroep hebt gemaakt die andere resources bevat die u wilt behouden, moet u elke resource afzonderlijk verwijderen uit het deelvenster in plaats van dat u de resourcegroep verwijdert.
- Meld u aan bij de Azure-portal en selecteer Resourcegroepen.
- Voer de naam van de resourcegroep in het vak Filteren op naam in.
- Selecteer in de resultatenlijst de resourcegroepnaam om een overzicht te bekijken.
- Selecteer Resourcegroep verwijderen.
- U wordt gevraagd om het verwijderen van de resourcegroep te bevestigen. Voer de naam van de resourcegroep in ter bevestiging en selecteer Verwijderen.
Na enkele ogenblikken worden de resourcegroep en alle bijbehorende resources verwijderd.
Volgende stappen
In deze quickstart hebt u een nieuw App Configuration-archief gemaakt en gebruikt om functies in een Python-app te beheren via de bibliotheek functiebeheer.
- Meer informatie over functiebeheer.
- Functievlaggen beheren.