Szybki start: dodawanie flag funkcji do aplikacji w języku Python

W tym szybkim starcie tworzysz flagę funkcji w Azure App Configuration i używasz jej do dynamicznego sterowania aplikacją Python, tworząc kompleksową implementację zarządzania funkcjami.

Wsparcie dla zarządzania funkcjami rozszerza dynamiczną konfigurację w Konfiguracji aplikacji. Przykłady w tym przewodniku Szybki start bazują na aplikacji w języku Python przedstawionej w samouczku dotyczącym konfiguracji dynamicznej. Zanim przejdziesz dalej, ukończ szybki start i samouczek tworzenia aplikacji Python z konfiguracją dynamiczną.

Biblioteka zarządzania funkcjami nie zależy od żadnych bibliotek Azure. Integruje się z konfiguracją aplikacji za pośrednictwem dostawcy konfiguracji Python.

Wymagania wstępne

Dodawanie flagi funkcji

Dodaj flagę funkcji o nazwie Beta do sklepu App Configuration i pozostaw pole Etykieta i Opis z ich wartościami domyślnymi. Aby uzyskać więcej informacji na temat dodawania flag funkcji do magazynu przy użyciu portalu Azure lub interfejsu wiersza polecenia (CLI), zobacz Tworzenie flagi funkcji. Na tym etapie pole wyboru 'Włącz funkcję' powinno być pozostawione niezaznaczone.

Zrzut ekranu przedstawiający flagę włączania funkcji o nazwie Beta.

Aplikacje konsolowe

  1. Zainstaluj zarządzanie funkcjami przy użyciu pip install polecenia .

    pip install featuremanagement
    
  2. Utwórz nowy plik w języku Python o nazwie app.py i dodaj następujący 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"))
    

Po uruchomieniu aplikacji zostanie otwarte okno przeglądarki w celu uwierzytelnienia użytkownika. Użytkownik musi mieć co najmniej rolę App Configuration Data Reader, aby uzyskać dostęp do magazynu App Configuration; więcej informacji znajduje się w sekcji Role usługi App Configuration.

  1. Ustaw zmienną środowiskową o nazwie APP_CONFIGURATION_ENDPOINT i przypisz jej adres punktu końcowego magazynu usługi App Configuration. W wierszu polecenia uruchom następujące polecenie i uruchom ponownie wiersz polecenia, aby umożliwić wprowadzenie zmiany:

    Aby skompilować i uruchomić aplikację lokalnie przy użyciu wiersza polecenia systemu Windows, uruchom następujące polecenie:

    setx APP_CONFIGURATION_ENDPOINT "<AppConfigurationEndpoint>"
    

    Uruchom ponownie wiersz polecenia, aby zezwolić na wprowadzenie zmiany. Zweryfikuj poprawność ustawienia, drukując wartość zmiennej środowiskowej.

  2. Uruchom aplikację w języku Python.

    python app.py
    
  3. W portalu konfiguracji aplikacji wybierz pozycję Menedżer funkcji i zmień stan flagi funkcji beta na Włączone, używając przełącznika w kolumnie Włączone .

    klucz Stan
    Beta Włączone
  4. Po około 30 s, czyli po upływie okresu odświeżania dla dostawcy, aplikacja wyświetli następujące informacje:

    Beta is True
    

Aplikacje sieci Web

Poniższy przykład pokazuje, jak zaktualizować istniejącą aplikację internetową przy użyciu usługi Azure App Configuration z funkcją dynamicznego odświeżania tak, aby korzystała również z flag funkcji. Zobacz Konfiguracja dynamiczna języka Python, aby uzyskać bardziej szczegółowy przykład użycia odświeżania dynamicznego dla wartości konfiguracji. Zanim przejdziesz dalej, upewnij się, że flaga funkcji Beta jest włączona w magazynie konfiguracji aplikacji.

W app.py skonfiguruj metodę ładowania usługi Azure App Configuration tak, aby dodatkowo ładowała flagi funkcji, a także włączała ich odświeżanie.

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)

Zaktualizuj również trasy, aby sprawdzić zaktualizowane flagi funkcji.

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

Zaktualizuj szablon index.html , aby używał nowych flag funkcji.

...

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

Po zaktualizowaniu i uruchomieniu aplikacji możesz zobaczyć działanie flagi funkcji: na stronie pojawi się komunikat Beta is enabled, ale tylko wtedy, gdy flaga funkcji jest włączona w magazynie App Configuration.

Zrzut ekranu przedstawiający włączoną flagę funkcji w wersji beta.

Pełny przykładowy projekt można znaleźć tutaj.

Za każdym razem, gdy te punkty końcowe są wywoływane, można przeprowadzić sprawdzenie odświeżenia, aby mieć pewność, że używane są najnowsze wartości konfiguracji. Sprawdzenie może zakończyć się natychmiast, jeśli interwał odświeżania jeszcze nie upłynął lub odświeżanie jest już w toku.

Po zakończeniu odświeżania wszystkie wartości są aktualizowane jednocześnie, więc konfiguracja jest zawsze spójna w obiekcie.

Czyszczenie zasobów

Jeśli nie chcesz nadal korzystać z zasobów utworzonych w tym artykule, usuń utworzoną tutaj grupę zasobów, aby uniknąć naliczania opłat.

Ważne

Usunięcie grupy zasobów jest nieodwracalne. Grupa zasobów i wszystkie zasoby w niej są trwale usuwane. Upewnij się, że nie usuniesz przez przypadek niewłaściwej grupy zasobów lub zasobów. Jeśli zasoby dla tego artykułu zostały utworzone w grupie zasobów zawierającej inne zasoby, które chcesz zachować, usuń każdy zasób oddzielnie z odpowiedniego okienka zamiast usuwać grupę zasobów.

  1. Zaloguj się do witryny Azure Portal i wybierz pozycję Grupy zasobów.
  2. W polu Filtruj według nazwy wprowadź nazwę grupy zasobów.
  3. Na liście wyników wybierz nazwę grupy zasobów, aby wyświetlić przegląd.
  4. Wybierz pozycję Usuń grupę zasobów.
  5. Zostaniesz poproszony o potwierdzenie usunięcia grupy zasobów. Wprowadź nazwę grupy zasobów, aby potwierdzić, a następnie wybierz pozycję Usuń.

Po kilku chwilach grupa zasobów i wszystkie jej zasoby zostaną usunięte.

Następne kroki

W tym przewodniku Szybki start utworzysz nowy magazyn App Configuration i użyjesz go do zarządzania funkcjami w aplikacji w języku Python przy użyciu biblioteki Feature Management library.