Vytvoření první odolné funkce v Pythonu

Durable Functions je rozšíření Azure Functions , které umožňuje psát stavové funkce v bezserverovém prostředí. Toto rozšíření za vás spravuje stav, kontrolní body a restartování.

V tomto článku se dozvíte, jak pomocí rozšíření Azure Functions editoru Visual Studio Code místně vytvořit a otestovat odolnou funkci "hello world". Tato funkce bude orchestrovat a zřetězení volání do jiných funkcí. Kód funkce pak můžete publikovat do Azure.

Snímek obrazovky se spuštěnou odolnou funkcí v Azure

Požadavky

Pro absolvování tohoto kurzu potřebujete:

Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet Azure před tím, než začnete.

Vytvoření místního projektu

V této části pomocí editoru Visual Studio Code vytvoříte místní projekt Azure Functions.

  1. V editoru Visual Studio Code stisknutím klávesY F1 (nebo Ctrl/Cmd+Shift+P) otevřete paletu příkazů. Na paletě příkazů vyhledejte a vyberte Azure Functions: Create New Project....

    Snímek obrazovky s oknem Vytvořit funkci

  2. Zvolte prázdné umístění složky pro váš projekt a zvolte Vybrat.

  1. Postupujte podle pokynů a zadejte následující informace:

    Instrukce Hodnota Popis
    Výběr jazyka pro projekt aplikace funkcí Python Vytvořte místní projekt Python Functions.
    Vyberte verzi. Azure Functions v4 Tuto možnost uvidíte jenom v případě, že nástroje Core Tools ještě nejsou nainstalované. V tomto případě se nástroje Core Tools nainstalují při prvním spuštění aplikace.
    Verze Pythonu Python 3.7, 3.8, 3.9 nebo 3.10 Visual Studio Code vytvoří virtuální prostředí s vámi zvolenou verzí.
    Výběr šablony pro první funkci projektu Prozatím přeskočte
    Vyberte, jak chcete projekt otevřít. Otevřít v aktuálním okně Znovu otevře Visual Studio Code ve složce, kterou jste vybrali.
  1. Postupujte podle pokynů a zadejte následující informace:

    Instrukce Hodnota Popis
    Vyberte jazyk Python (programovací model V2) Vytvořte místní projekt Python Functions pomocí programovacího modelu V2.
    Vyberte verzi. Azure Functions v4 Tuto možnost uvidíte jenom v případě, že nástroje Core Tools ještě nejsou nainstalované. V tomto případě se nástroje Core Tools nainstalují při prvním spuštění aplikace.
    Verze Pythonu Python 3.7, 3.8, 3.9 nebo 3.10 Visual Studio Code vytvoří virtuální prostředí s vámi zvolenou verzí.
    Vyberte, jak chcete projekt otevřít. Otevřít v aktuálním okně Znovu otevře Visual Studio Code ve složce, kterou jste vybrali.

Visual Studio Code v případě potřeby nainstaluje nástroje Azure Functions Core Tools. Vytvoří také projekt aplikace funkcí ve složce. Tento projekt obsahuje konfigurační soubory host.json a local.settings.json .

V kořenové složce se vytvoří také soubor requirements.txt . Určuje balíčky Pythonu potřebné ke spuštění vaší aplikace funkcí.

Instalace azure-functions-durable z PyPI

Po vytvoření projektu rozšíření Azure Functions Visual Studio Code automaticky vytvoří virtuální prostředí s vybranou verzí Pythonu. Pak je potřeba aktivovat virtuální prostředí v terminálu a nainstalovat některé závislosti vyžadované službami Azure Functions a Durable Functions.

  1. Otevřete requirements.txt v editoru a změňte jeho obsah na následující kód:

    azure-functions
    azure-functions-durable
    
  2. Otevřete integrovaný terminál editoru v aktuální složce (Ctrl+Shift+').

  3. V integrovaném terminálu aktivujte virtuální prostředí v aktuální složce v závislosti na vašem operačním systému:

    source .venv/bin/activate
    
  4. V integrovaném terminálu, kde je aktivované virtuální prostředí, použijte pip k instalaci balíčků, které jste definovali.

    python -m pip install -r requirements.txt
    

Vytvoření funkcí

Základní aplikace Durable Functions obsahuje tři funkce:

  • Funkce orchestratoru: Popisuje pracovní postup, který orchestruje další funkce.
  • Funkce aktivity: Volá ji funkce orchestrátoru, provádí práci a volitelně vrací hodnotu.
  • Klientská funkce: Je to běžná funkce Azure, která spouští funkci orchestrátoru. Tento příklad používá funkci aktivovanou protokolem HTTP.

Orchestrator

Pomocí šablony vytvoříte v projektu kód odolné funkce.

  1. Na paletě příkazů vyhledejte a vyberte Azure Functions: Create Function....

  2. Postupujte podle pokynů a zadejte následující informace:

    Instrukce Hodnota Popis
    Výběr šablony pro funkci Orchestrátor Durable Functions Vytvoření orchestrace Durable Functions
    Zadejte název funkce. HelloOrchestrator Název odolné funkce

Přidali jste orchestrátor pro koordinaci funkcí aktivit. Otevřete HelloOrchestrator/__init__.py a zobrazte funkci orchestrátoru. Každé volání context.call_activity vyvolá funkci aktivity s názvem Hello.

Dále přidáte odkazovanou Hello funkci aktivity.

Aktivita

  1. Na paletě příkazů vyhledejte a vyberte Azure Functions: Create Function....

  2. Postupujte podle pokynů a zadejte následující informace:

    Instrukce Hodnota Popis
    Výběr šablony pro funkci Aktivita Durable Functions Vytvoření funkce aktivity
    Zadejte název funkce. Hello (Nazdar) Název funkce aktivity

Přidali Hello jste funkci aktivity, která je vyvolána orchestrátorem. Otevřete Hello/__init__.py , abyste viděli, že jako vstup přebírá název a vrací pozdrav. Funkce aktivity je místo, kde budete provádět akce, jako je volání databáze nebo provádění výpočtů.

Nakonec přidáte funkci aktivovanou protokolem HTTP, která spustí orchestraci.

Klientská funkce (úvodní aplikace HTTP)

  1. Na paletě příkazů vyhledejte a vyberte Azure Functions: Create Function....

  2. Postupujte podle pokynů a zadejte následující informace:

    Instrukce Hodnota Popis
    Výběr šablony pro funkci Starter HTTP durable Functions Vytvoření úvodní funkce HTTP
    Zadejte název funkce. DurableFunctionsHttpStart Název funkce klienta
    Úroveň autorizace Anonymní Pro ukázkové účely povolte, aby se funkce volala bez ověřování.

Přidali jste funkci aktivovanou protokolem HTTP, která spouští orchestraci. Otevřete DurableFunctionsHttpStart/__init__.py , abyste viděli, že používá client.start_new ke spuštění nové orchestrace. Pak se používá client.create_check_status_response k vrácení odpovědi HTTP obsahující adresy URL, které lze použít k monitorování a správě nové orchestrace.

Teď máte aplikaci Durable Functions, která se dá spustit místně a nasadit do Azure.

Požadavky

Verze 2 programovacího modelu Pythonu vyžaduje následující minimální verze:

Povolení programovacího modelu v2

Ke spuštění programovacího modelu v2 se vyžaduje následující nastavení aplikace:

  • Název: AzureWebJobsFeatureFlags
  • Hodnota: EnableWorkerIndexing

Pokud používáte Nástroje Azure Functions Core Tools místně, měli byste do local.settings.json souboru přidat toto nastavení. Pokud používáte v Azure, použijte tento postup s nástrojem podle svého výběru:

Nahraďte <FUNCTION_APP_NAME> a <RESOURCE_GROUP_NAME> nahraďte název vaší aplikace funkcí a skupiny prostředků.

az functionapp config appsettings set --name <FUNCTION_APP_NAME> --resource-group <RESOURCE_GROUP_NAME> --settings AzureWebJobsFeatureFlags=EnableWorkerIndexing

Pokud chcete vytvořit základní aplikaci Durable Functions pomocí těchto 3 typů funkcí, nahraďte obsah function_app.py následujícím kódem Pythonu.

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

V následující tabulce najdete vysvětlení jednotlivých funkcí a jejich účelu v ukázce.

metoda Popis
hello_orchestrator Funkce orchestrátoru, která popisuje pracovní postup. V tomto případě se orchestrace spustí, vyvolá tři funkce v sekvenci a vrátí seřazené výsledky všech 3 funkcí v seznamu.
hello Funkce aktivity, která provádí orchestraci práce. Funkce vrátí jednoduché pozdravy města předané jako argument.
http_start Funkce aktivovaná protokolem HTTP, která spouští instanci orchestrace a vrací odpověď na stav kontroly.

Poznámka:

Durable Functions také podporuje podrobné plány Pythonu V2. Pokud je chcete použít, budete muset pomocí třídy zaregistrovat funkce podrobného azure-functions-durableBlueprint plánu, jak je znázorněno zde. Výsledný podrobný plán je pak možné zaregistrovat jako normální. Příklad najdete v naší ukázce .

Místní testování funkce

Nástroje Azure Functions Core umožňují spouštět projekt Azure Functions na místním počítači pro vývoj. Pokud ho nemáte nainstalovaný, zobrazí se výzva k instalaci těchto nástrojů při prvním spuštění funkce ze sady Visual Studio Code.

  1. Pokud chcete funkci otestovat, nastavte zarážku v Hello kódu funkce aktivity (Hello/__init__.py). Stisknutím klávesy F5 nebo výběrem Debug: Start Debugging z palety příkazů spusťte projekt aplikace funkcí. Výstup z nástrojů Tools se zobrazí na panelu Terminál.
  1. Pokud chcete funkci otestovat, nastavte zarážku v hello kódu funkce aktivity. Stisknutím klávesy F5 nebo výběrem Debug: Start Debugging z palety příkazů spusťte projekt aplikace funkcí. Výstup z nástrojů Tools se zobrazí na panelu Terminál.

Poznámka:

Další informace o ladění naleznete v tématu Diagnostika Durable Functions.

  1. Durable Functions vyžaduje, aby se spustil účet úložiště Azure. Když vás Visual Studio Code vyzve k výběru účtu úložiště, vyberte Vybrat účet úložiště.

    Snímek obrazovky znázorňuje, jak vytvořit účet úložiště

  2. Postupujte podle pokynů a zadejte následující informace a vytvořte nový účet úložiště v Azure:

    Instrukce Hodnota Popis
    Výběr předplatného název vašeho předplatného Vybrat předplatné Azure
    Vyberte účet úložiště. Vytvoření nového účtu úložiště
    Zadejte název nového účtu úložiště. jedinečný název Název účtu úložiště, který se má vytvořit
    Výběr skupiny prostředků jedinečný název Název skupiny prostředků, která se má vytvořit
    Výběr umístění Oblasti Vyberte oblast blízko vás.
  3. Na panelu Terminál zkopírujte adresu URL koncového bodu vaší funkce aktivované protokolem HTTP.

    Snímek obrazovky s místním výstupem Azure

  1. Použijte prohlížeč nebo nástroj, jako je Postman nebo cURL, odešlete do koncového bodu adresy URL požadavek HTTP. Nahraďte poslední segment názvem funkce orchestrátoru (HelloOrchestrator). Adresa URL musí být podobná http://localhost:7071/api/orchestrators/HelloOrchestrator.

    Odpověď je počáteční výsledek funkce HTTP s informacemi o úspěšném spuštění odolné orchestrace. Zatím není konečným výsledkem orchestrace. Odpověď obsahuje několik užitečných adres URL. Prozatím se dotazujme na stav orchestrace.

  1. Použijte prohlížeč nebo nástroj, jako je Postman nebo cURL, odešlete do koncového bodu adresy URL požadavek HTTP. Nahraďte poslední segment názvem funkce orchestrátoru (hello_orchestrator). Adresa URL musí být podobná http://localhost:7071/api/orchestrators/hello_orchestrator.

    Odpověď je počáteční výsledek funkce HTTP s informacemi o úspěšném spuštění odolné orchestrace. Zatím není konečným výsledkem orchestrace. Odpověď obsahuje několik užitečných adres URL. Prozatím se dotazujme na stav orchestrace.

  1. Zkopírujte hodnotu adresy URL pro statusQueryGetUri, vložte ji do adresního řádku prohlížeče a spusťte požadavek. Alternativně můžete k vydání požadavku GET dál používat Nástroj Postman.

    Požadavek odešle dotaz na instanci orchestrace pro stav. Musíte získat konečnou odpověď, která ukazuje, že instance byla dokončena a obsahuje výstupy nebo výsledky odolné funkce. Vypadá takto:

{
    "name": "HelloOrchestrator",
    "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"
}
{
    "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"
}
  1. Ladění zastavíte stisknutím shift +F5 v editoru Visual Studio Code.

Po ověření správného fungování funkce na místním počítači je na čase publikovat projekt do Azure.

Přihlášení k Azure

Než budete moct vytvářet prostředky Azure nebo publikovat aplikaci, musíte se přihlásit do Azure.

  1. Pokud ještě nejste přihlášení, zvolte ikonu Azure na panelu aktivit. Pak v oblasti Prostředky zvolte Přihlásit se k Azure....

    Snímek obrazovky s oknem přihlášení k Azure v editoru VS Code

    Pokud už jste přihlášení a uvidíte stávající předplatná, přejděte k další části. Pokud ještě nemáte účet Azure, zvolte Vytvořit účet Azure.... Studenti můžou zvolit Vytvořit účet Azure for Students....

  2. Po zobrazení výzvy v prohlížeči zvolte svůj účet Azure a přihlaste se pomocí svých přihlašovacích údajů k účtu Azure. Pokud vytvoříte nový účet, můžete se přihlásit po vytvoření účtu.

  3. Po úspěšném přihlášení můžete zavřít nové okno prohlížeče. Na bočním panelu se zobrazí předplatná, která patří vašemu účtu Azure.

Vytvoření aplikace funkcí v Azure

V této části vytvoříte aplikaci funkcí a související prostředky v předplatném Azure.

  1. Na panelu Aktivit zvolte ikonu Azure. Pak v oblasti Prostředky vyberte + ikonu a zvolte možnost Vytvořit aplikaci funkcí v Azure .

    Vytvoření prostředku v předplatném Azure

  2. Podle pokynů na obrazovce zadejte tyto informace:

    Instrukce Výběr
    Výběr předplatného Vyberte předplatné, které chcete použít. Tato výzva se nezobrazí, pokud v části Prostředky uvidíte jenom jedno předplatné.
    Zadejte globálně jedinečný název aplikace funkcí. Zadejte název, který je platný v cestě URL. Název, který zadáte, se ověří, aby se zajistilo, že je jedinečný ve službě Azure Functions.
    Výběr zásobníku modulu runtime Zvolte jazyková verze, na které jste místně spustili.
    Výběr umístění pro nové prostředky Pokud chcete dosáhnout lepšího výkonu , zvolte oblast blízko vás.

    Rozšíření zobrazuje stav jednotlivých prostředků při jejich vytváření v Azure na panelu Protokol aktivit.

    Protokol vytvoření prostředku Azure

  3. Po dokončení vytváření se ve vašem předplatném vytvoří následující prostředky Azure. Prostředky se pojmenují na základě názvu vaší aplikace funkcí:

    • Skupina prostředků, což je logický kontejner pro související prostředky.
    • Standardní účet Azure Storage, který udržuje stav a další informace o vašich projektech.
    • Aplikace funkcí, která poskytuje prostředí pro spouštění kódu funkce. Aplikace funkcí umožňuje seskupit funkce jako logickou jednotku pro snadnější správu, nasazení a sdílení prostředků ve stejném plánu hostování.
    • Plán služby App Service, který definuje základního hostitele vaší aplikace funkcí.
    • Aplikace Přehledy instanci připojenou k aplikaci funkcí, která sleduje využití vašich funkcí v aplikaci.

    Po vytvoření aplikace funkcí a použití balíčku nasazení se zobrazí oznámení.

    Tip

    Ve výchozím nastavení se prostředky Azure vyžadované vaší aplikací funkcí vytvoří na základě vámi zadaného názvu aplikace funkcí. Ve výchozím nastavení se také vytvoří ve stejné nové skupině prostředků s aplikací funkcí. Pokud chcete buď přizpůsobit názvy těchto zdrojů, nebo znovu použít existující zdroje, musíte projekt publikovat s pokročilými možnostmi vytvoření.

Nasazení projektu do Azure

Důležité

Nasazení do existující aplikace funkcí vždy přepíše obsah této aplikace v Azure.

  1. V oblasti Prostředky aktivity Azure vyhledejte prostředek aplikace funkcí, který jste právě vytvořili, klikněte pravým tlačítkem na prostředek a vyberte Nasadit do aplikace funkcí....

  2. Po zobrazení výzvy k přepsání předchozích nasazení vyberte Nasadit a nasaďte kód funkce do nového prostředku aplikace funkcí.

  3. Po dokončení nasazení vyberte Zobrazit výstup a zobrazte výsledky vytváření a nasazení, včetně prostředků Azure, které jste vytvořili. Pokud oznámení vynecháte, vyberte ikonu zvonku v pravém dolním rohu a znovu ho zobrazte.

    Snímek obrazovky s oknem Zobrazit výstup

Testování funkce v Azure

  1. Zkopírujte adresu URL triggeru HTTP z panelu Výstup. Adresa URL, která volá funkci aktivovanou protokolem HTTP, musí být v tomto formátu: https://<functionappname>.azurewebsites.net/api/orchestrators/HelloOrchestrator
  1. Zkopírujte adresu URL triggeru HTTP z panelu Výstup. Adresa URL, která volá funkci aktivovanou protokolem HTTP, musí být v tomto formátu: https://<functionappname>.azurewebsites.net/api/orchestrators/hello_orchestrator
  1. Vložte tuto novou adresu URL požadavku HTTP do adresního řádku prohlížeče. Při použití publikované aplikace musíte získat stejnou odpověď na stav jako předtím.

Další kroky

Pomocí editoru Visual Studio Code jste vytvořili a publikovali aplikaci trvalých funkcí Pythonu.