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.
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.
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.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.
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.
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.
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
Az aktuális mappában nyissa meg a szerkesztő integrált terminálját (Ctrl+Shift+').
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.
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.
A parancskatalógusban adja meg, majd válassza az Azure Functions: Függvény létrehozása lehetőséget.
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
A parancskatalógusban adja meg, majd válassza az Azure Functions: Függvény létrehozása lehetőséget.
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ő)
A parancskatalógusban adja meg, majd válassza az Azure Functions: Függvény létrehozása lehetőséget.
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:
- Azure Functions Runtime v4.16+
- Azure Functions Core Tools v4.0.5095+ (helyi futtatás esetén)
- azure-functions-durable v1.2.4+
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.
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.
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.
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.
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. A terminálpanelen másolja ki a HTTP-aktivált függvény URL-végpontját.
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özhttp://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.
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" }
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özhttp://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.
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" }
- 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.
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.
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.
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.
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.
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.A parancssorban adja meg a következő információkat:
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.
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.
A parancskatalógusban adja meg, majd válassza az Azure Functions: Üzembe helyezés függvényalkalmazásban lehetőséget.
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.
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.
A függvény tesztelése az Azure-ban
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
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
- 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.
Kapcsolódó tartalom
- Ismerje meg a Durable Functions gyakori alkalmazásmintáit.