Snabbstart: Lägga till funktionsflaggor i en Python-app

I denna quickstart skapar du en funktionsflagga i Azure App Configuration och använder den för att dynamiskt styra en Python-app, vilket skapar en helhetsimplementation av funktionshantering.

Funktionshanteringsstöd utökar den dynamiska konfigurationsfunktionen i App Configuration. Exemplen i denna snabbstart bygger på Python-appen som introducerades i den dynamiska konfigurationsguiden. Innan du fortsätter, slutför quickstart och handledningen för att skapa Python-appar med dynamisk konfiguration.

Funktionshanteringsbiblioteket är inte beroende av några Azure-bibliotek. Den integreras med App Configuration via Python-konfigurationsleverantören.

Förutsättningar

Lägga till en funktionsflagga

Lägg till en funktionsflagga med namnet Beta i App Configuration Store och lämna Etikett och Beskrivning med sina standardvärden. Mer information om hur du lägger till funktionsflaggor i en butik med hjälp av Azure Portal eller CLI finns i Skapa en funktionsflagga. I det här skedet bör kryssrutan Aktivera funktionsflagga vara avmarkerad.

Skärmbild av den aktiverade funktionsflaggan med namnet Beta.

Konsolprogram

  1. Installera funktionshantering med kommandot pip install.

    pip install featuremanagement
    
  2. Skapa en ny Python-fil med namnet app.py och lägg till följande kod:

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

När du startar programmet öppnas ett webbläsarfönster för att autentisera användaren. Användaren måste ha minst rollen App Configuration Data Reader för att få åtkomst till App Configuration Store. Mer information finns i Appkonfigurationsroller .

  1. Ange en miljövariabel med namnet APP_CONFIGURATION_ENDPOINT, och ange den som slutpunkten för ditt App Configuration-lager. På kommandoraden kör du följande kommando och startar om kommandotolken för att tillåta att ändringen börjar gälla:

    Kör följande kommando för att skapa och köra appen lokalt med hjälp av Windows-kommandotolken:

    setx APP_CONFIGURATION_ENDPOINT "<AppConfigurationEndpoint>"
    

    Starta om kommandotolken så att ändringen börjar gälla. Kontrollera att den har angetts korrekt genom att skriva ut värdet för miljövariabeln.

  2. Kör Python-programmet.

    python app.py
    
  3. I appkonfigurationsportalen väljer du Funktionshanteraren och ändrar status för betafunktionsflaggan till med hjälp av växlingsknappen i kolumnen Aktiverad.

    Nyckel Tillstånd
    Beta-version
  4. Efter cirka 30 sekunder, vilket är uppdateringsintervallet för leverantören, kommer programmet att skriva ut följande:

    Beta is True
    

Webbapplikationer

I följande exempel visas hur du uppdaterar ett befintligt webbprogram med hjälp av Azure App Configuration med dynamisk uppdatering för att även använda funktionsflaggor. Se Python Dynamic Configuration för ett mer detaljerat exempel på hur du använder dynamisk uppdatering för konfigurationsvärden. Innan du fortsätter, se till att du har funktionsflaggan Beta aktiverad i ditt App Configuration-lager.

I app.py konfigurerar du Azure App Configurations läsmetod för att även läsa in funktionsflaggor och aktiverar uppdatering av funktionsflaggor.

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)

Uppdatera även dina vägar för att söka efter uppdaterade funktionsflaggor.

@app.route("/")
def index():
    ...
    context["message"] = azure_app_config.get("message")
    context["beta"] = feature_manager.is_enabled("Beta")
    ...

Uppdatera mallen index.html så att den använder de nya funktionsflaggorna.

...

<body>
  <main>
    <div>
      <h1>{{message}}</h1>
      {% if beta %}
      <h2>Beta is enabled</h2>
      {% endif %}
    </div>
  </main>
</body>

När du har uppdaterat och kört programmet kan du se funktionsflaggan i praktiken, där Beta is enabled meddelandet visas på sidan, men bara om funktionsflaggan är aktiverad i App Configuration Store.

Skärmbild av att funktionsflaggan beta är aktiverad.

Du hittar ett fullständigt exempelprojekt här.

När dessa slutpunkter utlöses kan en uppdateringskontroll utföras för att säkerställa att de senaste konfigurationsvärdena används. Kontrollen kan returneras omedelbart om uppdateringsintervallet ännu inte har passerat eller om en uppdatering redan pågår.

När en uppdatering är klar uppdateras alla värden samtidigt, så konfigurationen är alltid konsekvent i objektet.

Rensa resurser

Om du inte vill fortsätta använda resurserna som skapas i den här artikeln tar du bort resursgruppen som du skapade här för att undvika avgifter.

Viktigt!

Att ta bort en resursgrupp kan inte ångras. Resursgruppen och alla resurser i den tas bort permanent. Se till att du inte oavsiktligt tar bort fel resursgrupp eller resurser. Om du har skapat resurserna för den här artikeln i en resursgrupp som innehåller andra resurser som du vill behålla tar du bort varje resurs individuellt från respektive fönster i stället för att ta bort resursgruppen.

  1. Logga in på Azure Portal och välj Resursgrupper.
  2. I rutan Filtrera efter namn anger du namnet på resursgruppen.
  3. I resultatlistan väljer du resursgruppens namn för att se en översikt.
  4. Välj Ta bort resursgrupp.
  5. Du blir ombedd att bekräfta borttagningen av resursgruppen. Ange namnet på resursgruppen för att bekräfta och välj Ta bort.

Efter en liten stund tas resursgruppen och alla dess resurser bort.

Nästa steg

I den här snabbstarten skapade du ett nytt appkonfigurationsarkiv och använde det för att hantera funktioner i en Python-app via funktionshanteringsbiblioteket.