Az első tartós függvény létrehozása a Pythonban
A Durable Functions az Azure Functions bővítménye, amellyel állapotalapú függvényeket írhat kiszolgáló nélküli környezetben. A bővítmény automatikusan kezeli az állapotokat, az ellenőrzőpontokat és az újraindításokat.
Ebben a cikkben megtudhatja, hogyan használhatja a Visual Studio Code Azure Functions bővítményt egy "hello world" tartós függvény helyi létrehozására és tesztelésére. Ez a függvény összehangolja és összekapcsolja a más függvényekhez intézett hívásokat. Ezután közzéteheti a függvénykódot az Azure-ban.
Előfeltételek
Az oktatóanyag elvégzéséhez:
A Visual Studio Code telepítése.
Telepítse az Azure Functions Visual Studio Code bővítményt.
Győződjön meg arról, hogy az Azure Functions Core Tools legújabb verziójával rendelkezik.
A Durable Functions használatához Azure Storage-fiók szükséges. Azure-előfizetésre van szüksége.
Győződjön meg arról, hogy telepítve van a Python 3.7-es, 3.8-os, 3.9-es vagy 3.10-es verziója.
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 nyomja le az F1 (vagy Ctrl/Cmd+Shift+P) billentyűkombinációt a parancskatalógus megnyitásához. A parancskatalógusban keresse meg és válassza ki a kívánt parancsot
Azure Functions: Create New Project...
.Válasszon egy üres mappahelyet a projekthez, és válassza a Kiválasztás lehetőséget.
Kövesse az utasításokat, és adja meg a következő információkat:
Adatkérés Érték Leírás Nyelv kiválasztása a függvényalkalmazás-projekthez Python Hozzon létre egy helyi Python Functions-projektet. Verzió kiválasztása Azure Functions v4 Ez a beállítás 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ó Python 3.7, 3.8, 3.9 vagy 3.10 A Visual Studio Code létrehoz egy virtuális környezetet a kiválasztott verzióval. Sablon kiválasztása a projekt első függvényéhez Kihagyás Válassza ki, hogyan szeretné megnyitni a projektet Megnyitás az aktuális ablakban Újra megnyitja a Visual Studio Code-ot a kiválasztott mappában.
Kövesse az utasításokat, és adja meg a következő információkat:
Adatkérés Érték Leírás Válasszon nyelvet Python (Programozási modell V2) Hozzon létre egy helyi Python Functions-projektet a V2 programozási modellel. Verzió kiválasztása Azure Functions v4 Ez a beállítás 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ó Python 3.7, 3.8, 3.9 vagy 3.10 A Visual Studio Code létrehoz egy virtuális környezetet a kiválasztott verzióval. Válassza ki, hogyan szeretné megnyitni a projektet Megnyitás az aktuális ablakban Újra megnyitja a Visual Studio Code-ot a kiválasztott mappában.
A Visual Studio Code szükség esetén telepíti az Azure Functions Core Toolst. 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
Nyissa meg a szerkesztő integrált terminálját az aktuális mappában (Ctrl+Shift+' billentyűkombináció).
Az integrált terminálon az operációs rendszertől függően aktiválja a virtuális környezetet az aktuális mappában:
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
Egy alapszintű Durable Functions-alkalmazás három függvényt tartalmaz:
- Vezénylő függvény: Olyan munkafolyamatot ír le, amely más függvényeket vezényl.
- Tevékenységfüggvény: A vezénylő függvény hívja meg, elvégzi a munkát, és opcionálisan egy értéket ad vissza.
- Ügyfélfüggvény: Ez egy rendszeres Azure-függvény, amely elindít egy vezénylő függvényt. Ez a példa EGY HTTP által aktivált függvényt használ.
Orchestrator függvény
Sablon használatával hozza létre a tartós függvénykódot a projektben.
A parancskatalógusban keresse meg és válassza ki a kívánt parancsot
Azure Functions: Create Function...
.Kövesse az utasításokat, és adja meg a következő információkat:
Adatkérés Érték Leírás Sablon kiválasztása a függvényhez Durable Functions vezénylő Durable Functions-vezénylés létrehozása Függvénynév megadása HelloOrchestrator 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 hozzáadja a hivatkozott tevékenységfüggvényt Hello
.
Tevékenységfüggvény
A parancskatalógusban keresse meg és válassza ki a kívánt parancsot
Azure Functions: Create Function...
.Kövesse az utasításokat, és adja meg a következő információkat:
Adatkérés Érték Leírás Sablon kiválasztása a függvényhez Durable Functions-tevékenység Tevékenységfüggvény létrehozása Függvénynév megadása Üdvözöljük 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 keresse meg és válassza ki a kívánt parancsot
Azure Functions: Create Function...
.Kövesse az utasításokat, és adja meg a következő információkat:
Adatkérés Érték Leírás Sablon kiválasztása a függvényhez Durable Functions HTTP starter HTTP kezdőfüggvény létrehozása Függvénynév megadása DurableFunctionsHttpStart Az ügyfélfüggvény neve Engedélyszint Névtelen Demó céljából engedélyezze a függvény hitelesítés nélküli meghívását
Hozzáadott egy HTTP-aktivált függvényt, amely elindít egy vezénylést. 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+
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, vegye fel ezt a beállítást a local.settings.json
fájlba. Ha az Azure-ban fut, kövesse az alábbi lépéseket a választott 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 3 függvénytípussal, cserélje le a következő Python-kód tartalmát function_app.py
.
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, három függvényt hív meg egy sorrendben, és 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és alatt álló műveletet. 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, és egy ellenőrző állapotválaszt ad vissza. |
Feljegyzés
A Durable Functions a Python V2 terveit is támogatja. A használatukhoz regisztrálnia kell a tervfüggvényeket az azure-functions-durable
Blueprint
osztály használatával, az itt látható módon. Az eredményként kapott terv ezután a szokásos módon regisztrálható. Tekintse meg a mintánk egy példáját.
A függvény helyi tesztelése
Az Azure Functions Core Tools lehetővé teszi Azure Functions-projektek helyi fejlesztői számítógépen való futtatását. Ha nincs telepítve, a rendszer kérni fogja, hogy telepítse ezeket az eszközöket, amikor először indít el egy függvényt a Visual Studio Code-bó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 (Hello/__init__.py). Nyomja le az F5 billentyűt, vagy válasszonDebug: Start Debugging
a parancskatalógusból a függvényalkalmazás-projekt elindításához. A Core Tools kimenete a Terminal (Terminál) panelen jelenik meg.
- A függvény teszteléséhez állítson be egy töréspontot a
hello
tevékenységfüggvény kódjában. Nyomja le az F5 billentyűt, vagy válasszonDebug: Start Debugging
a parancskatalógusból a függvényalkalmazás-projekt elindításához. A Core Tools kimenete a Terminal (Terminál) panelen jelenik meg.
Feljegyzés
További információ a hibakeresésről: Durable Functions Diagnostics.
A Durable Functions használatához Azure Storage-fiók szükséges. 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övesse az utasításokat, és adja meg a következő információkat egy új tárfiók azure-beli létrehozásához:
Adatkérés Érték Leírás Előfizetés kiválasztása az előfizetés neve Válassza ki az Azure-előfizetését Tárfiók kiválasztása Új tárfiók létrehozása Adja meg az új tárfiók nevét egyedi név A létrehozandó tárfiók neve Erőforráscsoport kiválasztása egyedi név A létrehozandó erőforráscsoport neve Hely kiválasztása Régió Válasszon egy Önhöz közeli régiót A Terminal (Terminál) panelen másolja a vágólapra a HTTP által indított függvény URL-végpontját.
Használja a böngészőt, vagy egy olyan eszközt, mint a Postman vagy a cURL, küldjön egy HTTP-kérést az URL-végpontra. 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, amelyből megtudhatja, hogy a tartós vezénylés sikeresen elindult. Még nem ez a vezénylés végeredménye. A válasz tartalmaz néhány hasznos URL-címet. Egyelőre kérdezzük le a vezénylés állapotát.
Használja a böngészőt, vagy egy olyan eszközt, mint a Postman vagy a cURL, küldjön egy HTTP-kérést az URL-végpontra. Cserélje le az utolsó szegmenst a vezénylő függvény (
hello_orchestrator
) nevére. Az URL-címnek hasonlónak kell lennie a következőhözhttp://localhost:7071/api/orchestrators/hello_orchestrator
: .A válasz a HTTP-függvény kezdeti eredménye, amelyből megtudhatja, hogy a tartós vezénylés sikeresen elindult. Még nem ez a vezénylés végeredménye. A válasz tartalmaz néhány hasznos URL-címet. Egyelőre kérdezzük le a vezénylés állapotát.
Másolja ki a böngésző url-címét
statusQueryGetUri
, illessze be a böngésző címsorában, és hajtsa végre a kérést. Másik lehetőségként továbbra is használhatja a Postmant a GET kérés kiadásához.A kérés lekérdezi az állapot vezénylési példányát. Egy végleges választ kell kapnia, amely azt mutatja, hogy a példány befejeződött, és tartalmazza a tartós függvény kimeneteit vagy eredményeit. A következőképpen 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"
}
{
"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 nyomja le a Shift+F5 billentyűkombinációt a Visual Studio Code-ban.
Miután ellenőrizte, hogy a függvény megfelelően fut a helyi számítógépen, tegye közzé 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 nincs bejelentkezve, válassza az Azure ikont a Tevékenységsávon. 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 vá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.
Válassza az Azure ikont a Tevékenységsávon. Ezután az Erőforrások területen válassza az ikont + , és válassza a Függvényalkalmazás létrehozása az Azure-ban lehetőséget.
Amikor a rendszer kéri, adja meg az alábbi információkat:
A bővítmény az egyes erőforrások állapotát jeleníti meg az Azure-ban az Azure: Tevékenységnapló panelen való létrehozásuk során.
Amikor a létrehozás befejeződött, a következő Azure-erőforrások jönnek létre az előfizetésben. Az erőforrások neve a függvényalkalmazás neve alapján van 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.
- App Service-csomag, amely meghatározza a függvényalkalmazás mögöttes gazdagépét.
- Egy alkalmazás Elemzések függvényalkalmazáshoz csatlakoztatott példányt, 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 megadott függvényalkalmazás-név alapján jönnek létre. Alapértelmezés szerint ugyanabban az új erőforráscsoportban is létrejönnek a függvényalkalmazással. Ha testre szeretné szabni ezeknek az erőforrásoknak a nevét, vagy újra szeretné használni a meglévő erőforrásokat, akkor inkább speciális létrehozási lehetőségekkel kell közzétennie a projektet.
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.
Az Azure-tevékenység Erőforrások területén keresse meg az imént létrehozott függvényalkalmazás-erőforrást, kattintson a jobb gombbal az erőforrásra, és válassza az Üzembe helyezés függvényalkalmazáshoz... lehetőséget.
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ése után 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 a vágólapra a HTTP-eseményindító URL-címét az Output (Kimenet) 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 a vágólapra a HTTP-eseményindító URL-címét az Output (Kimenet) 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 ezt az új URL-címet a HTTP-kéréshez a böngésző címsorában. A közzétett alkalmazás használatakor ugyanazt az állapotválaszt kell kapnia, mint korábban.
Következő lépések
A Visual Studio Code használatával létrehozott és közzétett egy Python tartós függvényalkalmazást.