Delen via


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

Schermopname van de functievlag met de naam Bèta inschakelen.

Consoletoepassingen

  1. Installeer Functiebeheer met behulp van de pip install opdracht.

    pip install featuremanagement
    
  2. 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.

  1. 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.

  2. Voer de Python-toepassing uit.

    python app.py
    
  3. 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
  4. 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.pyAzure-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.

Schermopname van het inschakelen van de bètaversie van de functievlag ingeschakeld.

Hier vindt u een volledig voorbeeldproject.

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.

  1. Meld u aan bij de Azure-portal en selecteer Resourcegroepen.
  2. Voer de naam van de resourcegroep in het vak Filteren op naam in.
  3. Selecteer in de resultatenlijst de resourcegroepnaam om een overzicht te bekijken.
  4. Selecteer Resourcegroep verwijderen.
  5. 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.