Dela via


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

I den här snabbstarten skapar du en funktionsflagga i Azure App Configuration och använder den för att dynamiskt styra Python-appar för att skapa en implementering av funktionshantering från slutpunkt till slutpunkt.

Stöd för funktionshantering utökar funktionen för dynamisk konfiguration i App Configuration. De här exemplen i snabbstarten bygger på dePpython-appar som introducerades i självstudien för dynamisk konfiguration. Innan du fortsätter slutför du snabbstarten och självstudien för att skapa Python-appar med dynamisk konfiguration först.

Det här biblioteket har inget beroende av några Azure-bibliotek. De integreras sömlöst med App Configuration via dess Python-konfigurationsprovider.

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-portalen eller CLI finns i Skapa en funktionsflagga. I det här skedet bör bocken Aktivera funktionsflagga vara avmarkerad.

Skärmbild av aktivera funktionsflagga med namnet Beta.

Konsolprogram

  1. Installera Funktionshantering med hjälp pip install av kommandot .

    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 ställ in den på slutpunkten till appkonfigurationsarkivet. 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 "endpoint-of-your-app-configuration-store"
    

    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
  4. Efter cirka 30-talet, vilket är uppdateringsintervallet för providern, skriver programmet ut följande:

    Beta is True
    

Webbprogram

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 kontrollerar du att betafunktionsflaggan är aktiverad i appkonfigurationsarkivet.

I app.pykonfigurerar du Inläsningsmetoden för Azure App Configuration för att dessutom läsa in funktionsflaggor, tillsammans med aktivering av 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 aktivera beta av funktionsflaggan 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-portalen 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.