Udostępnij za pomocą


Szybki start: tworzenie aplikacji Durable Functions w języku Python

Użyj rozszerzenia Durable Functions, funkcji usługi Azure Functions, aby napisać funkcje stanowe w środowisku bezserwerowym. Rozszerzenie Durable Functions można zainstalować, instalując rozszerzenie usługi Azure Functions w programie Visual Studio Code. Rozszerzenie zarządza stanem, punktami kontrolnymi i ponownymi uruchomieniami w aplikacji.

W tym przewodniku Szybki start użyjesz rozszerzenia Durable Functions w programie Visual Studio Code, aby lokalnie utworzyć i przetestować aplikację Durable Functions "hello world" w usłudze Azure Functions. Aplikacja Durable Functions organizuje i tworzy łańcuchy wywołań do innych funkcji. Następnie opublikujesz kod funkcji na platformie Azure. Używane narzędzia są dostępne za pośrednictwem rozszerzenia programu Visual Studio Code.

Zrzut ekranu przedstawiający uruchomioną aplikację Durable Functions na platformie Azure.

Uwaga

W tym szybkiego startu używany jest model programowania oparty na dekoratorach w wersji 2 dla języka Python. Ten model zapewnia prostszą strukturę plików i jest bardziej skoncentrowany na kodzie w porównaniu z wersją 1.

Wymagania wstępne

Aby ukończyć ten przewodnik Szybki Start, musisz spełnić następujące warunki:

Jeśli nie masz jeszcze konta platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.

Tworzenie projektu lokalnego

W tej sekcji użyjesz programu Visual Studio Code do utworzenia lokalnego projektu usługi Azure Functions.

  1. W programie Visual Studio Code wybierz F1 (lub naciśnij Ctrl/Cmd+Shift+P), aby otworzyć paletę poleceń. Po wyświetleniu monitu () wprowadź , a następnie wybierz pozycję Azure Functions: Create New Project (>Azure Functions: Utwórz nowy projekt).

    Zrzut ekranu przedstawiający okno Tworzenie funkcji.

  2. Wybierz przycisk Przeglądaj. W oknie dialogowym Wybieranie folderu przejdź do folderu, który ma być używany dla projektu, a następnie wybierz pozycję Wybierz.

  3. Po wyświetleniu monitów podaj następujące informacje:

    Monit Akcja opis
    Wybieranie języka projektu aplikacji funkcji Wybierz pozycję Python. Tworzy lokalny projekt usługi Python Functions.
    Wybierz wersję Wybierz pozycję Azure Functions w wersji 4. Ta opcja jest widoczna tylko wtedy, gdy narzędzia Core Tools nie są jeszcze zainstalowane. W takim przypadku narzędzia Core Tools są instalowane po raz pierwszy podczas uruchamiania aplikacji.
    Wersja języka Python Wybierz pozycję Python 3.7, Python 3.8, Python 3.9 lub Python 3.10. Program Visual Studio Code tworzy środowisko wirtualne przy użyciu wybranej wersji.
    Wybieranie szablonu dla pierwszej funkcji projektu Wybierz pozycję Pomiń na razie.
    Wybierz sposób otwierania projektu Wybierz pozycję Otwórz w bieżącym oknie. Otwiera program Visual Studio Code w wybranym folderze.

Program Visual Studio Code instaluje narzędzia Azure Functions Core Tools, jeśli jest wymagane do utworzenia projektu. Tworzy również projekt aplikacji funkcji w folderze. Ten projekt zawiera pliki konfiguracji host.json i local.settings.json .

Plik requirements.txt jest również tworzony w folderze głównym. Określa pakiety języka Python wymagane do uruchomienia aplikacji funkcji.

Instalowanie rozszerzenia azure-functions-durable z poziomu interfejsu PyPI

Podczas tworzenia projektu rozszerzenie programu Visual Studio Code usługi Azure Functions automatycznie tworzy środowisko wirtualne z wybraną wersją języka Python. Następnie należy aktywować środowisko wirtualne w terminalu i zainstalować pewne zależności wymagane przez usługi Azure Functions i Durable Functions.

  1. Otwórz requirements.txt w edytorze i zmień jego zawartość na następujący kod:

    azure-functions
    azure-functions-durable
    
  2. W bieżącym folderze otwórz zintegrowany terminal edytora (Ctrl+Shift+').

  3. W zintegrowanym terminalu aktywuj środowisko wirtualne w bieżącym folderze w zależności od systemu operacyjnego.

    source .venv/bin/activate
    

Następnie w zintegrowanym terminalu, w którym aktywowano środowisko wirtualne, użyj narzędzia, aby zainstalować zdefiniowane pakiety.

python -m pip install -r requirements.txt

Uwaga

Musisz zainstalować rozszerzenie azure-functions-durable w wersji 1.2.4 lub nowszej.

Tworzenie funkcji

Najbardziej podstawowa aplikacja Durable Functions ma trzy funkcje:

  • Funkcja orkiestratora: przepływ pracy, który organizuje inne funkcje.
  • Funkcja działania: funkcja wywoływana przez funkcję orkiestratora, wykonuje pracę i opcjonalnie zwraca wartość.
  • Funkcja klienta: zwykła funkcja na platformie Azure, która uruchamia funkcję orkiestratora. W tym przykładzie użyto funkcji wyzwalanej przez protokół HTTP.

Przykładowy kod

Aby utworzyć podstawową aplikację Durable Functions przy użyciu tych trzech typów funkcji, zastąp zawartość function_app.py następującym kodem w języku Python:

import azure.functions as func
import azure.durable_functions as df

myApp = df.DFApp(http_auth_level=func.AuthLevel.ANONYMOUS)

# An HTTP-triggered function with a Durable Functions client binding
@myApp.route(route="orchestrators/{functionName}")
@myApp.durable_client_input(client_name="client")
async def http_start(req: func.HttpRequest, client):
    function_name = req.route_params.get('functionName')
    instance_id = await client.start_new(function_name)
    response = client.create_check_status_response(req, instance_id)
    return response

# Orchestrator
@myApp.orchestration_trigger(context_name="context")
def hello_orchestrator(context):
    result1 = yield context.call_activity("hello", "Seattle")
    result2 = yield context.call_activity("hello", "Tokyo")
    result3 = yield context.call_activity("hello", "London")

    return [result1, result2, result3]

# Activity
@myApp.activity_trigger(input_name="city")
def hello(city: str):
    return f"Hello {city}"

Zapoznaj się z poniższą tabelą, aby zapoznać się z wyjaśnieniem poszczególnych funkcji i jej przeznaczenia w przykładzie:

Metoda opis
hello_orchestrator Funkcja orkiestratora, która opisuje przepływ pracy. W takim przypadku orkiestracja rozpoczyna się, wywołuje trzy funkcje w sekwencji, a następnie zwraca uporządkowane wyniki wszystkich trzech funkcji na liście.
hello Funkcja działania, która wykonuje aranżowaną pracę. Funkcja zwraca proste powitanie do miasta przekazanego jako argument.
http_start Funkcja wyzwalana przez protokół HTTP, która uruchamia wystąpienie orkiestracji i zwraca check status odpowiedź.

Uwaga

Rozszerzenie Durable Functions obsługuje również szablony nowego modelu programowania Python v2. Aby użyć strategii, zarejestruj funkcje strategii przy użyciu Blueprint Możesz zarejestrować wynikową strategię w zwykły sposób. Możesz użyć naszego przykładu jako przykładu.

Skonfiguruj emulator magazynu

Aby przetestować funkcję lokalnie, możesz użyć biblioteki Azurite, emulatora usługi Azure Storage. W local.settings.json ustaw wartość na AzureWebJobsStorageUseDevelopmentStorage=true podobną w tym przykładzie:

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "FUNCTIONS_WORKER_RUNTIME": "python"
  }
}

Aby zainstalować i rozpocząć uruchamianie rozszerzenia Azurite w programie Visual Studio Code, w palecie poleceń wprowadź Azurite : Uruchom i wybierz Enter.

Możesz użyć innych opcji magazynu dla aplikacji Durable Functions. Aby uzyskać więcej informacji na temat opcji magazynu i korzyści, zobacz Durable Functions storage providers (Dostawcy magazynu Durable Functions).

Lokalne testowanie funkcji

Narzędzia Azure Functions Core Tools umożliwiają uruchamianie projektu usługi Azure Functions na lokalnym komputerze deweloperów. Jeśli nie został zainstalowany, zostanie wyświetlony monit o zainstalowanie tych narzędzi przy pierwszym uruchomieniu funkcji w programie Visual Studio Code.

  1. Aby przetestować funkcję, ustaw punkt przerwania w hello kodzie funkcji działania. Wybierz pozycję F5 lub wybierz pozycję Debuguj: rozpocznij debugowanie na palecie poleceń, aby uruchomić projekt aplikacji funkcji. Dane wyjściowe z narzędzi Core Tools są wyświetlane na panelu terminalu.

    Uwaga

    Aby uzyskać więcej informacji na temat debugowania, zobacz Diagnostyka rozszerzenia Durable Functions.

  2. Na panelu terminalu skopiuj punkt końcowy adresu URL funkcji wyzwalanej przez protokół HTTP.

    Zrzut ekranu przedstawiający lokalne dane wyjściowe platformy Azure.

  3. Użyj przeglądarki lub narzędzia testowego HTTP, aby wysłać żądanie HTTP POST do punktu końcowego adresu URL.

    Zastąp ostatni segment nazwą funkcji orkiestratora (hello_orchestrator). Adres URL powinien być podobny do http://localhost:7071/api/orchestrators/hello_orchestrator.

    Odpowiedź to początkowy wynik funkcji HTTP. Informuje o tym, że trwała aranżacja została uruchomiona pomyślnie. Nie wyświetla jeszcze wyniku końcowego aranżacji. Odpowiedź zawiera kilka przydatnych adresów URL. Na razie wykonaj zapytanie dotyczące stanu aranżacji.

  4. Skopiuj wartość adresu URL dla statusQueryGetUri, wklej ją na pasku adresu przeglądarki i wykonaj żądanie. Możesz również nadal używać narzędzia do testowania HTTP w celu wystawienia żądania GET.

    Żądanie wysyła zapytanie do wystąpienia orkiestracji dla stanu. Powinno zostać wyświetlone, że wystąpienie zostało zakończone i że zawiera dane wyjściowe lub wyniki funkcji trwałej. Wygląda podobnie do tego przykładu:

    {
        "name": "hello_orchestrator",
        "instanceId": "9a528a9e926f4b46b7d3deaa134b7e8a",
        "runtimeStatus": "Completed",
        "input": null,
        "customStatus": null,
        "output": [
            "Hello Tokyo!",
            "Hello Seattle!",
            "Hello London!"
        ],
        "createdTime": "2020-03-18T21:54:49Z",
        "lastUpdatedTime": "2020-03-18T21:54:54Z"
    }
    
  5. Aby zatrzymać debugowanie, w programie Visual Studio Code wybierz pozycję Shift+F5.

Po sprawdzeniu, czy funkcja działa poprawnie na komputerze lokalnym, nadszedł czas na opublikowanie projektu na platformie Azure.

Logowanie się do platformy Azure

Aby można było utworzyć zasoby platformy Azure lub opublikować aplikację, musisz zalogować się na platformie Azure.

  1. Jeśli jeszcze nie zalogowałeś się, na pasku Działania wybierz ikonę platformy Azure. Następnie w obszarze Zasoby wybierz pozycję Zaloguj się na platformie Azure.

    Zrzut ekranu przedstawiający okno logowania do platformy Azure w programie Visual Studio Code.

    Jeśli już się zalogowałeś i widzisz istniejące subskrypcje, przejdź do następnej sekcji. Jeśli nie masz jeszcze konta platformy Azure, wybierz pozycję Utwórz konto platformy Azure. Uczniowie mogą wybrać pozycję Utwórz konto platformy Azure for Students.

  2. Po wyświetleniu monitu w przeglądarce wybierz swoje konto platformy Azure i zaloguj się przy użyciu poświadczeń konta platformy Azure. Jeśli tworzysz nowe konto, możesz zalogować się po utworzeniu konta.

  3. Po pomyślnym zalogowaniu można zamknąć nowe okno przeglądarki. Subskrypcje należące do konta platformy Azure są wyświetlane na pasku bocznym.

Tworzenie aplikacji funkcji na platformie Azure

W tej sekcji utworzysz aplikację funkcji w planie Flex Consumption wraz z powiązanymi zasobami w ramach subskrypcji platformy Azure. Wiele decyzji dotyczących tworzenia zasobów jest podejmowanych na podstawie domyślnych zachowań. Aby uzyskać większą kontrolę nad utworzonymi zasobami, należy zamiast tego utworzyć aplikację funkcji z opcjami zaawansowanymi.

  1. W programie Visual Studio Code wybierz F1, aby otworzyć paletę poleceń. Po wyświetleniu monitu (>) wprowadź, a następnie wybierz pozycję Azure Functions: Utwórz aplikację funkcji na platformie Azure.

  2. Po wyświetleniu monitów podaj następujące informacje:

    Monit Akcja
    Wybierz subskrypcję Wybierz subskrypcję platformy Azure do użycia. Monit nie jest wyświetlany, gdy w obszarze Zasoby jest widoczna tylko jedna subskrypcja.
    Wprowadź nową nazwę aplikacji funkcji Wprowadź globalnie unikatową nazwę poprawną dla ścieżki adresu URL. Wprowadzona nazwa jest weryfikowana, aby upewnić się, że jest unikatowa w usłudze Azure Functions.
    Wybieranie lokalizacji dla nowych zasobów Określ region platformy Azure. Aby uzyskać lepszą wydajność, wybierz region w pobliżu. Wyświetlane są tylko regiony obsługiwane przez plany Flex Consumption.
    Wybieranie stosu środowiska uruchomieniowego Wybierz wersję języka, która jest obecnie uruchamiana lokalnie.
    Wybierz typ uwierzytelniania zasobu Wybierz pozycję Tożsamość zarządzana, która jest najbezpieczniejszą opcją nawiązywania połączenia z domyślnym kontem magazynu hosta.

    Na panelu Azure: Dziennik aktywności rozszerzenie platformy Azure pokazuje stan poszczególnych zasobów podczas ich tworzenia na platformie Azure.

    Zrzut ekranu przedstawiający dziennik tworzenia zasobów platformy Azure.

  3. Po utworzeniu aplikacji funkcji następujące powiązane zasoby są tworzone w ramach subskrypcji platformy Azure. Zasoby są nazwane na podstawie nazwy wprowadzonej dla aplikacji funkcji.

    • Grupa zasobów, która jest kontenerem logicznym dla powiązanych zasobów.
    • Aplikacja funkcji, która udostępnia środowisko do wykonywania kodu funkcji. Aplikacja funkcji umożliwia grupowanie funkcji jako jednostki logicznej w celu łatwiejszego zarządzania, wdrażania i udostępniania zasobów w ramach tego samego planu hostingu.
    • Plan usługi aplikacja systemu Azure, który definiuje podstawowy host aplikacji funkcji.
    • Standardowe konto usługi Azure Storage, które jest używane przez hosta usługi Functions do utrzymania stanu i innych informacji dotyczących twojej aplikacji funkcji.
    • Wystąpienie usługi Application Insights połączone z aplikacją funkcji, które śledzi korzystanie z funkcji w aplikacji.
    • Tożsamość zarządzana przypisana przez użytkownika dodana do roli Współautor danych obiektu blob usługi Storage w nowym domyślnym koncie magazynu hostów.

    Po utworzeniu aplikacji funkcji i zastosowaniu pakietu wdrożeniowego zostanie wyświetlone powiadomienie.

    Napiwek

    Domyślnie zasoby platformy Azure wymagane przez aplikację funkcji są tworzone na podstawie nazwy wprowadzonej dla aplikacji funkcji. Domyślnie zasoby są tworzone za pomocą aplikacji funkcji w tej samej, nowej grupie zasobów. Jeśli chcesz dostosować nazwy skojarzonych zasobów lub ponownie użyć istniejących zasobów, opublikuj projekt przy użyciu zaawansowanych opcji tworzenia.

Wdrażanie projektu na platformie Azure

Ważne

Wdrażanie w istniejącej aplikacji funkcji zawsze zastępuje zawartość tej aplikacji na platformie Azure.

  1. W palecie poleceń wprowadź i wybierz pozycję Azure Functions: Deploy to Function App (Azure Functions: Wdróż w aplikacji funkcji).

  2. Wybierz właśnie utworzoną aplikację funkcji. Po wyświetleniu monitu o zastąpienie poprzednich wdrożeń wybierz pozycję Wdróż , aby wdrożyć kod funkcji w nowym zasobie aplikacji funkcji.

  3. Po zakończeniu wdrażania wybierz pozycję Wyświetl dane wyjściowe , aby wyświetlić wyniki tworzenia i wdrażania, w tym utworzone zasoby platformy Azure. Jeśli przegapisz powiadomienie, wybierz ikonę dzwonka w prawym dolnym rogu, aby zobaczyć je ponownie.

    Zrzut ekranu przedstawiający okno Wyświetl dane wyjściowe.

Testowanie funkcji na platformie Azure

  1. Skopiuj adres URL wyzwalacza HTTP z panelu danych wyjściowych. Adres URL, który wywołuje funkcję wyzwalaną przez protokół HTTP, musi mieć następujący format:

    https://<functionappname>.azurewebsites.net/api/orchestrators/hello_orchestrator

  2. Wklej nowy adres URL żądania HTTP na pasku adresu przeglądarki. Gdy używasz opublikowanej aplikacji, możesz oczekiwać, że otrzymasz tę samą odpowiedź o stanie otrzymaną podczas testowania lokalnego.

Aplikacja Durable Functions języka Python utworzona i opublikowana przy użyciu programu Visual Studio Code jest gotowa do użycia.

Czyszczenie zasobów

Jeśli nie potrzebujesz już zasobów utworzonych do ukończenia tego przewodnika Szybki start, aby uniknąć powiązanych kosztów w ramach subskrypcji platformy Azure, usuń grupę zasobów i wszystkie powiązane zasoby.