Megosztás a következőn keresztül:


Rövid útmutató: Python Durable Functions-alkalmazás létrehozása

Az Azure Functions egyik funkciója, a Durable Functions használatával állapotalapú függvényeket írhat kiszolgáló nélküli környezetben. A Durable Functions telepítéséhez telepítse az Azure Functions bővítményt a Visual Studio Code-ban. A bővítmény kezeli az állapotot, az ellenőrzőpontokat és az újraindításokat az alkalmazásban.

Ebben a rövid útmutatóban a Visual Studio Code Durable Functions bővítményével helyileg hozhat létre és tesztelhet egy "hello world" Durable Functions-alkalmazást az Azure Functionsben. A Durable Functions alkalmazás más függvények hívásait vezénylik és láncolják. Ezután közzéteszi a függvénykódot az Azure-ban. A használt eszközök a Visual Studio Code bővítményen keresztül érhetők el.

Képernyőkép a futó Durable Functions-alkalmazásról az Azure-ban.

Előfeltételek

A rövid útmutató elvégzéséhez a következőkre lesz szüksége:

  • A Visual Studio Code telepítve van.

  • Telepítette a Visual Studio Code-bővítményt , az Azure Functionst .

  • Az Azure Functions Core Tools legújabb verziója telepítve van.

  • EGY HTTP-teszteszköz, amely biztonságossá teszi az adatokat. További információ: HTTP-teszteszközök.

  • Azure-előfizetés. A Durable Functions használatához Azure Storage-fiókkal kell rendelkeznie.

  • A Python 3.7-es, 3.8-os, 3.9-es vagy 3.10-es verziója telepítve van.

Ha nem rendelkezik Azure-előfizetéssel, első lépésként hozzon létre egy ingyenes Azure-fiókot.

Helyi projekt létrehozása

Ebben a szakaszban a Visual Studio Code használatával hoz létre egy helyi Azure Functions-projektet.

  1. A Visual Studio Code-ban válassza az F1 (vagy a Ctrl/Cmd+Shift+P) billentyűkombinációt a parancspaletta megnyitásához. A parancssorba írja> be, majd válassza az Azure Functions: Create New Project (Új projekt létrehozása) lehetőséget.

    A Függvény létrehozása ablak képernyőképe.

  2. Válassza a Tallózás lehetőséget. A Mappa kiválasztása párbeszédpanelen lépjen a projekthez használni kívánt mappára, majd válassza a Kiválasztás lehetőséget.

  1. A parancssorban adja meg a következő információkat:

    Felszólítás Művelet Leírás
    Nyelv kiválasztása a függvényalkalmazás-projekthez Válassza a Pythont. Létrehoz egy helyi Python Functions-projektet.
    Verzió kiválasztása Válassza az Azure Functions 4-et. Ez a lehetőség csak akkor jelenik meg, ha a Core Tools még nincs telepítve. Ebben az esetben a Core Tools az alkalmazás első futtatásakor lesz telepítve.
    Python-verzió Válassza a Python 3.7, Python 3.8, Python 3.9 vagy Python 3.10 elemet. A Visual Studio Code a kiválasztott verzióval hoz létre egy virtuális környezetet.
    Sablon kiválasztása a projekt első függvényéhez Most válassza a Kihagyás lehetőséget.
    Válassza ki, hogyan szeretné megnyitni a projektet Válassza a Megnyitás az aktuális ablakban lehetőséget. Megnyitja a Visual Studio Code-ot a kijelölt mappában.
  1. A parancssorban adja meg a következő információkat:

    Felszólítás Érték Leírás
    Nyelv kiválasztása Válassza a Python (Programozási modell V2) lehetőséget. Helyi Python Functions-projektet hoz létre a V2 programozási modell használatával.
    Verzió kiválasztása Válassza az Azure Functions 4-et. Ez a lehetőség csak akkor jelenik meg, ha a Core Tools még nincs telepítve. Ebben az esetben a Core Tools az alkalmazás első futtatásakor lesz telepítve.
    Python-verzió Válassza a Python 3.7, Python 3.8, Python 3.9 vagy Python 3.10 elemet. A Visual Studio Code a kiválasztott verzióval hoz létre egy virtuális környezetet.
    Válassza ki, hogyan szeretné megnyitni a projektet Válassza a Megnyitás az aktuális ablakban lehetőséget. Megnyitja a Visual Studio Code-ot a kijelölt mappában.

A Visual Studio Code telepíti az Azure Functions Core Toolst, ha projekt létrehozásához szükséges. Emellett létrehoz egy függvényalkalmazás-projektet egy mappában. Ez a projekt tartalmazza a host.json és local.settings.json konfigurációs fájlokat.

A gyökérmappában is létrejön egy requirements.txt fájl. Meghatározza a függvényalkalmazás futtatásához szükséges Python-csomagokat.

Az azure-functions-durable telepítése a PyPI-ból

A projekt létrehozásakor az Azure Functions Visual Studio Code bővítmény automatikusan létrehoz egy virtuális környezetet a kiválasztott Python-verzióval. Ezután aktiválnia kell a virtuális környezetet egy terminálon, és telepítenie kell az Azure Functions és a Durable Functions által megkövetelt függőségeket.

  1. Nyissa meg a requirements.txt a szerkesztőben, és módosítsa annak tartalmát a következő kódra:

    azure-functions
    azure-functions-durable
    
  2. Az aktuális mappában nyissa meg a szerkesztő integrált terminálját (Ctrl+Shift+').

  3. Az integrált terminálon az operációs rendszertől függően aktiválja az aktuális mappában lévő virtuális környezetet.

    source .venv/bin/activate
    

Ezután a virtuális környezetet aktiváló integrált terminálban a pip használatával telepítse a megadott csomagokat.

python -m pip install -r requirements.txt

A függvények létrehozása

A legalapvetőbb Durable Functions-alkalmazás három funkcióval rendelkezik:

  • Vezénylő függvény: Más függvényeket vezénylő munkafolyamat.
  • Tevékenységfüggvény: A vezénylő függvény által hívott függvény, amely elvégzi a munkát, és opcionálisan egy értéket ad vissza.
  • Ügyfélfüggvény: Az Azure rendszeres függvénye, amely elindít egy vezénylőfüggvényt. Ez a példa EGY HTTP-aktivált függvényt használ.

Orchestrator függvény

Sablonnal hozhatja létre a Durable Functions alkalmazáskódot a projektben.

  1. A parancskatalógusban adja meg, majd válassza az Azure Functions: Függvény létrehozása lehetőséget.

  2. A parancssorban adja meg a következő információkat:

    Felszólítás Művelet Leírás
    Sablon kiválasztása a függvényhez Válassza a Durable Functions vezénylőt. Egy Durable Functions-alkalmazás vezénylését hozza létre.
    Függvénynév megadása Válassza a HelloOrchestrator lehetőséget. A tartós függvény neve.

Felvett egy vezénylőt a tevékenységfüggvények koordinálásához. Nyissa meg a HelloOrchestrator/__init__.py a vezénylő függvény megtekintéséhez. Minden hívás meghív context.call_activity egy tevékenységfüggvényt.Hello

Ezután adja hozzá a hivatkozott tevékenységfüggvényt Hello .

Tevékenységfüggvény

  1. A parancskatalógusban adja meg, majd válassza az Azure Functions: Függvény létrehozása lehetőséget.

  2. A parancssorban adja meg a következő információkat:

    Felszólítás Művelet Leírás
    Sablon kiválasztása a függvényhez Válassza ki a Durable Functions-tevékenységet. Létrehoz egy tevékenységfüggvényt.
    Függvénynév megadása Adja meg a Hello billentyűt. A tevékenységfüggvény neve.

Hozzáadta a Hello vezénylő által meghívott tevékenységfüggvényt. Nyissa meg a Hello/__init__.py elemet, és ellenőrizze, hogy a név bemenetként szerepel-e, és egy üdvözlést ad vissza. A tevékenységfüggvények olyan műveleteket hajtanak végre, mint például egy adatbázis-hívás vagy egy számítás végrehajtása.

Végül hozzáad egy HTTP-aktivált függvényt, amely elindítja a vezénylést.

Ügyfélfüggvény (HTTP-kezdő)

  1. A parancskatalógusban adja meg, majd válassza az Azure Functions: Függvény létrehozása lehetőséget.

  2. A parancssorban adja meg a következő információkat:

    Felszólítás Művelet Leírás
    Sablon kiválasztása a függvényhez Válassza a Durable Functions HTTP starter lehetőséget. Létrehoz egy HTTP kezdőfüggvényt.
    Függvénynév megadása Adja meg a DurableFunctionsHttpStart parancsot. Az ügyfélfüggvény neve
    Engedélyszint Válassza a Névtelen lehetőséget. Demó céljából ez az érték lehetővé teszi a függvény meghívását hitelesítés nélkül.

Hozzáadott egy HTTP-aktivált függvényt, amely vezénylést indít el. Nyissa meg a DurableFunctionsHttpStart/__init__.py fájlt, és ellenőrizze, hogy az új vezénylés indításához használja-e client.start_new . Ezután egy URL-eket tartalmazó HTTP-választ ad client.create_check_status_response vissza, amely az új vezénylés monitorozására és kezelésére használható.

Most már rendelkezik egy Durable Functions-alkalmazással, amely helyileg futtatható és üzembe helyezhető az Azure-ban.

Követelmények

A Python programozási modell 2. verziójához a következő minimális verziók szükségesek:

A v2 programozási modell engedélyezése

A v2 programozási modell futtatásához a következő alkalmazásbeállítás szükséges:

  • Név: AzureWebJobsFeatureFlags
  • Érték: EnableWorkerIndexing

Ha helyileg fut az Azure Functions Core Tools használatával, adja hozzá ezt a beállítást a local.settings.json fájlhoz. Ha az Azure-ban fut, hajtsa végre az alábbi lépéseket egy megfelelő eszközzel:

Cserélje le és <RESOURCE_GROUP_NAME> írja be <FUNCTION_APP_NAME> a függvényalkalmazás és az erőforráscsoport nevét.

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

Ha alapszintű Durable Functions-alkalmazást szeretne létrehozni ezzel a három függvénytípussal, cserélje le a function_app.py tartalmát a következő Python-kódra:

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

Tekintse át az alábbi táblázatot az egyes függvények magyarázatához és céljához a mintában:

Metódus Leírás
hello_orchestrator A munkafolyamatot leíró vezénylő függvény. Ebben az esetben a vezénylés elindul, sorozatban három függvényt hív meg, majd visszaadja a lista mindhárom függvényének rendezett eredményeit.
hello A tevékenységfüggvény, amely végrehajtja a vezénylésre kerülő munkát. A függvény egy egyszerű üdvözlést ad vissza az argumentumként átadott városnak.
http_start EGY HTTP-aktivált függvény , amely elindítja a vezénylés egy példányát check status , és választ ad vissza.

Feljegyzés

A Durable Functions a Python v2-terveket is támogatja. A tervek használatához regisztrálja a tervfüggvényeket az azure-functions-durable Blueprint osztály használatával. Az eredményként kapott terveket a szokásos módon regisztrálhatja. Példaként használhatja a mintát .

A függvény helyi tesztelése

Az Azure Functions Core Tools lehetővé teszi egy Azure Functions-projekt helyi fejlesztési számítógépen való futtatását. Ha nincs telepítve, a rendszer arra kéri, hogy telepítse ezeket az eszközöket, amikor először indít el függvényt a Visual Studio Code-ban.

  1. A függvény teszteléséhez állítson be egy töréspontot a Hello tevékenységfüggvény kódjában (a Hello/__init__.py fájlban). Válassza az F5 lehetőséget, vagy válassza a Hibakeresés: Hibakeresés indítása a parancskatalógusban a függvényalkalmazás-projekt elindításához. A Core Tools kimenete megjelenik a terminálpanelen.

    Feljegyzés

    A hibakeresésről további információt a Durable Functions diagnosztika című témakörben talál.

  1. A függvény teszteléséhez állítson be egy töréspontot a hello tevékenységfüggvény kódjában. Válassza az F5 lehetőséget, vagy válassza a Hibakeresés: Hibakeresés indítása a parancskatalógusban a függvényalkalmazás-projekt elindításához. A Core Tools kimenete megjelenik a terminálpanelen.

    Feljegyzés

    A hibakeresésről további információt a Durable Functions diagnosztika című témakörben talál.

  1. A Durable Functions használatához egy Azure Storage-fiókra van szükség. Amikor a Visual Studio Code megkéri, hogy válasszon ki egy tárfiókot, válassza a Tárfiók kiválasztása lehetőséget.

    Képernyőkép tárfiók létrehozásáról.

  2. Az utasításokat követve adja meg az alábbi információkat egy új tárfiók azure-beli létrehozásához.

    Felszólítás Művelet Leírás
    Előfizetés kiválasztása Válassza ki az előfizetés nevét. Az Azure-előfizetése.
    Tárfiók kiválasztása Válassza az Új tárfiók létrehozása lehetőséget.
    Adja meg az új tárfiók nevét Adjon meg egy egyedi nevet. A létrehozandó tárfiók neve.
    Erőforráscsoport kiválasztása Adjon meg egy egyedi nevet. A létrehozandó erőforráscsoport neve.
    Hely kiválasztása Válassza ki a kívánt Azure-régiót. Válasszon ki egy Önhöz közeli régiót.
  3. A terminálpanelen másolja ki a HTTP-aktivált függvény URL-végpontját.

    Képernyőkép az Azure helyi kimenetéről.

  1. A böngésző vagy a HTTP-teszteszköz használatával HTTP POST-kérést küldhet az URL-végpontnak.

    Cserélje le az utolsó szegmenst a vezénylő függvény (HelloOrchestrator) nevére. Az URL-címnek hasonlónak kell lennie a következőhöz http://localhost:7071/api/orchestrators/HelloOrchestrator: .

    A válasz a HTTP-függvény kezdeti eredménye. Tudatja Önvel, hogy a tartós vezénylés sikeresen elindult. Még nem jeleníti meg a vezénylés végeredményét. A válasz tartalmaz néhány hasznos URL-címet. Egyelőre lekérdezheti a vezénylés állapotát.

  2. Másolja ki a cél URL-címét statusQueryGetUri, illessze be a böngésző címsorában, és hajtsa végre a kérést. A GET kérés kiadásához továbbra is használhatja a HTTP-teszteszközt.

    A kérés lekérdezi a vezénylési példányt az állapothoz. Látnia kell, hogy a példány befejeződött, és hogy tartalmazza a tartós függvény kimeneteit vagy eredményeit. A következő példához hasonlóan néz ki:

    {
        "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"
    }
    
  1. A böngésző vagy a HTTP-teszteszköz használatával HTTP POST-kérést küldhet az URL-végpontnak.

    Cserélje le az utolsó szegmenst a vezénylő függvény (HelloOrchestrator) nevére. Az URL-címnek hasonlónak kell lennie a következőhöz http://localhost:7071/api/orchestrators/HelloOrchestrator: .

    A válasz a HTTP-függvény kezdeti eredménye. Tudatja Önvel, hogy a tartós vezénylés sikeresen elindult. Még nem jeleníti meg a vezénylés végeredményét. A válasz tartalmaz néhány hasznos URL-címet. Egyelőre lekérdezheti a vezénylés állapotát.

  2. Másolja ki a cél URL-címét statusQueryGetUri, illessze be a böngésző címsorában, és hajtsa végre a kérést. A GET kérés kiadásához továbbra is használhatja a HTTP-teszteszközt.

    A kérés lekérdezi a vezénylési példányt az állapothoz. Látnia kell, hogy a példány befejeződött, és hogy tartalmazza a tartós függvény kimeneteit vagy eredményeit. A következő példához hasonlóan néz ki:

    {
        "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. A hibakeresés leállításához a Visual Studio Code-ban válassza a Shift+F5 billentyűkombinációt.

Miután ellenőrizte, hogy a függvény megfelelően fut-e a helyi számítógépen, ideje közzétenni a projektet az Azure-ban.

Bejelentkezés az Azure-ba

Az Azure-erőforrások létrehozása vagy az alkalmazás közzététele előtt be kell jelentkeznie az Azure-ba.

  1. Ha még nem jelentkezett be, a Tevékenységsávon válassza az Azure ikont. Ezután az Erőforrások területen válassza a Bejelentkezés az Azure-ba lehetőséget.

    Képernyőkép az Azure-ba való bejelentkezésről a Visual Studio Code-ban.

    Ha már bejelentkezett, és láthatja a meglévő előfizetéseit, lépjen a következő szakaszra. Ha még nem rendelkezik Azure-fiókkal, válassza az Azure-fiók létrehozása lehetőséget. A diákok kiválaszthatják az Azure for Students-fiók létrehozását.

  2. Amikor a rendszer kéri a böngészőben, válassza ki az Azure-fiókját, és jelentkezzen be az Azure-fiók hitelesítő adataival. Ha új fiókot hoz létre, a fiók létrehozása után bejelentkezhet.

  3. Miután sikeresen bejelentkezett, bezárhatja az új böngészőablakot. Az Azure-fiókhoz tartozó előfizetések az oldalsávon jelennek meg.

A függvényalkalmazás létrehozása az Azure-ban

Ebben a szakaszban egy függvényalkalmazást és kapcsolódó erőforrásokat hoz létre az Azure-előfizetésében. Számos erőforrás-létrehozási döntés az alapértelmezett viselkedés alapján történik. A létrehozott erőforrások további szabályozásához ehelyett speciális beállításokkal kell létrehoznia a függvényalkalmazást.

  1. A Visual Studio Code-ban válassza az F1 lehetőséget a parancskatalógus megnyitásához. A parancssorban (>) adja meg, majd válassza az Azure Functions: Függvényalkalmazás létrehozása az Azure-ban lehetőséget.

  2. A parancssorban adja meg a következő információkat:

    Felszólítás Művelet
    Előfizetés kiválasztása Válassza ki a használni kívánt Azure-előfizetést. A parancssor nem jelenik meg, ha csak egy előfizetés látható az Erőforrások területen.
    Adja meg a függvényalkalmazás globálisan egyedi nevét Adjon meg egy URL-elérési úton érvényes nevet. A megadott név érvényesítve van, hogy biztosan egyedi legyen az Azure Functionsben.
    Futtatókörnyezeti verem kiválasztása Válassza ki a helyileg futtatott nyelvi verziót.
    Új erőforrások helyének kiválasztása Válassza ki a kívánt Azure-régiót. A jobb teljesítmény érdekében válasszon ki egy Önhöz közeli régiót.

    Az Azure: Tevékenységnapló panelen az Azure-bővítmény megjeleníti az egyes erőforrások állapotát az Azure-ban való létrehozásuk során.

    Az Azure-erőforrások létrehozásának naplóját bemutató képernyőkép.

  3. A függvényalkalmazás létrehozásakor a következő kapcsolódó erőforrások jönnek létre az Azure-előfizetésben. Az erőforrások neve a függvényalkalmazáshoz megadott név alapján lesz elnevezve.

    • Egy erőforráscsoport, amely a kapcsolódó erőforrások logikai tárolója.
    • Egy standard Azure Storage-fiók, amely fenntartja a projektek állapotát és egyéb adatait.
    • Egy függvényalkalmazás, amely a függvénykód végrehajtásához biztosítja a környezetet. A függvényalkalmazásokkal logikai egységként csoportosíthatja a függvényeket az erőforrások egyszerűbb kezelése, üzembe helyezése és megosztása érdekében ugyanabban az üzemeltetési csomagban.
    • Egy Azure-alkalmazás szolgáltatáscsomag, amely meghatározza a függvényalkalmazás mögöttes gazdagépét.
    • A függvényalkalmazáshoz csatlakoztatott Application Insights-példány, amely nyomon követi a függvények használatát az alkalmazásban.

    A függvényalkalmazás létrehozása és a telepítőcsomag alkalmazása után megjelenik egy értesítés.

    Tipp.

    Alapértelmezés szerint a függvényalkalmazás által igényelt Azure-erőforrások a függvényalkalmazáshoz megadott név alapján jönnek létre. Alapértelmezés szerint az erőforrások ugyanabban az új erőforráscsoportban vannak létrehozva a függvényalkalmazással. Ha testre szeretné szabni a társított erőforrások nevét, vagy újra szeretné használni a meglévő erőforrásokat, tegye közzé a projektet speciális létrehozási lehetőségekkel.

A projekt központi telepítése az Azure-ban

Fontos

A meglévő függvényalkalmazásban való üzembe helyezés mindig felülírja az alkalmazás tartalmát az Azure-ban.

  1. A parancskatalógusban adja meg, majd válassza az Azure Functions: Üzembe helyezés függvényalkalmazásban lehetőséget.

  2. Válassza ki az imént létrehozott függvényalkalmazást. Amikor a rendszer kéri a korábbi üzemelő példányok felülírását, válassza az Üzembe helyezés lehetőséget a függvénykód új függvényalkalmazás-erőforrásban való üzembe helyezéséhez.

  3. Az üzembe helyezés befejezésekor válassza a Kimenet megtekintése lehetőséget a létrehozási és üzembe helyezési eredmények megtekintéséhez, beleértve a létrehozott Azure-erőforrásokat is. Ha nem jelenik meg az értesítés, a jobb alsó sarokban lévő harang ikont választva ismét láthatja.

    Képernyőkép a Kimenet megtekintése ablakról.

A függvény tesztelése az Azure-ban

  1. Másolja ki a HTTP-eseményindító URL-címét a kimeneti panelről. A HTTP-aktivált függvényt meghívó URL-címnek a következő formátumban kell lennie:

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

  1. Másolja ki a HTTP-eseményindító URL-címét a kimeneti panelről. A HTTP-aktivált függvényt meghívó URL-címnek a következő formátumban kell lennie:

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

  1. Illessze be a HTTP-kérés új URL-címét a böngésző címsorában. A közzétett alkalmazás használatakor számíthat arra, hogy ugyanazt az állapotválaszt kapja, mint a helyi tesztelés során.

A Visual Studio Code használatával létrehozott és közzétett Python Durable Functions-alkalmazás készen áll a használatra.

Az erőforrások eltávolítása

Ha már nincs szüksége a rövid útmutató végrehajtásához létrehozott erőforrásokra, az Azure-előfizetés kapcsolódó költségeinek elkerülése érdekében törölje az erőforráscsoportot és az összes kapcsolódó erőforrást.