Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Gebruik Durable Functions, een functie van Azure Functions, om stateful functies te schrijven in een serverloze omgeving. U installeert Durable Functions door de Azure Functions-extensie te installeren in Visual Studio Code. De extensie beheert de status, controlepunten en start deze opnieuw in uw toepassing.
In deze quickstart gebruikt u de Durable Functions-extensie in Visual Studio Code om lokaal een Durable Functions-app te maken en te testen in Azure Functions. De Durable Functions-app organiseert en koppelt deze aanroepen aan andere functies. Vervolgens publiceert u de functiecode naar Azure. De hulpprogramma's die u gebruikt, zijn beschikbaar via de Visual Studio Code-extensie.
Notitie
In deze quickstart wordt gebruikgemaakt van het op decorator gebaseerde v2-programmeermodel voor Python. Dit model biedt een eenvoudigere bestandsstructuur en is meer codegericht in vergelijking met v1.
Vereisten
U hebt het volgende nodig om deze snelstartgids te voltooien:
De Visual Studio Code-extensie Azure Functions is geïnstalleerd.
De nieuwste versie van Azure Functions Core Tools geïnstalleerd.
Een HTTP-testprogramma waarmee uw gegevens veilig blijven. Zie HTTP-testhulpprogramma's voor meer informatie.
Een Azure-abonnement voor het implementeren van apps in Azure.
Python-versie 3.7, 3.8, 3.9 of 3.10 geïnstalleerd.
Als u geen Azure-account hebt, maak dan een gratis account aan voordat u begint.
Uw lokale project maken
In deze sectie gebruikt u Visual Studio Code om een lokaal Azure Functions-project te maken.
Selecteer in Visual Studio Code F1 (of selecteer Ctrl/Cmd+Shift+P) om het opdrachtenpalet te openen. Voer bij de prompt (
>
) Azure Functions in en selecteer vervolgens Azure Functions: Nieuw project maken.Selecteer Bladeren. Ga in het dialoogvenster Map selecteren naar een map die u voor uw project wilt gebruiken en kies Selecteren.
Geef bij de prompts de volgende informatie op:
Snel Actie Beschrijving Selecteer een taal voor uw functie-app-project Selecteer Python. Hiermee maakt u een lokaal Python Functions-project. Een versie selecteren Selecteer Azure Functions v4. U ziet deze optie alleen wanneer Core Tools nog niet is geïnstalleerd. In dit geval wordt Core Tools geïnstalleerd wanneer u de app voor het eerst uitvoert. Python-versie Selecteer Python 3.7, Python 3.8, Python 3.9 of Python 3.10. Visual Studio Code maakt een virtuele omgeving met behulp van de versie die u selecteert. Selecteer een sjabloon voor de eerste functie van uw project Selecteer Voorlopig overslaan. Selecteer hoe u uw project wilt openen Selecteer Openen in het huidige venster. Hiermee opent u Visual Studio Code in de map die u hebt geselecteerd.
Visual Studio Code installeert Azure Functions Core Tools als het nodig is om een project te maken. Er wordt ook een functie-app-project gemaakt in een map. Dit project bevat de configuratiebestanden host.json en local.settings.json.
Er wordt ook een requirements.txt-bestand gemaakt in de hoofdmap. Hiermee geeft u de Python-pakketten op die nodig zijn om uw functie-app uit te voeren.
Azure-functions-durable installeren vanaf PyPI
Wanneer u het project maakt, maakt de Azure Functions Visual Studio Code-extensie automatisch een virtuele omgeving met de geselecteerde Python-versie. Vervolgens moet u de virtuele omgeving in een terminal activeren en enkele afhankelijkheden installeren die vereist zijn voor Azure Functions en Durable Functions.
Open de requirements.txt in de editor en wijzig de inhoud ervan in de volgende code:
azure-functions azure-functions-durable
Open in de huidige map de geïntegreerde terminal van de editor (Ctrl+Shift+').
Activeer in de geïntegreerde terminal de virtuele omgeving in de huidige map, afhankelijk van uw besturingssysteem.
Gebruik vervolgens pip in de geïntegreerde terminal waar de virtuele omgeving wordt geactiveerd om de pakketten te installeren die u hebt gedefinieerd.
python -m pip install -r requirements.txt
Notitie
U moet azure-functions-durable v1.2.4 of hoger installeren.
Uw functies maken
De meest eenvoudige Durable Functions-app heeft drie functies:
- Orchestratorfunctie: een werkstroom die andere functies organiseert.
- Activiteitsfunctie: Een functie die wordt aangeroepen door de orchestratorfunctie, voert werk uit en retourneert eventueel een waarde.
- Clientfunctie: Een reguliere functie in Azure die een orchestratorfunctie start. In dit voorbeeld wordt een door HTTP geactiveerde functie gebruikt.
Voorbeeldcode
Als u een eenvoudige Durable Functions-app wilt maken met behulp van deze drie functietypen, vervangt u de inhoud van function_app.py door de volgende Python-code:
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/hello_orchestrator")
@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}"
Bekijk de volgende tabel voor een uitleg van elke functie en het doel ervan in het voorbeeld:
Wijze | Beschrijving |
---|---|
hello_orchestrator |
De orchestratorfunctie, die de werkstroom beschrijft. In dit geval wordt de indeling gestart, worden drie functies in een reeks aangeroepen en worden vervolgens de geordende resultaten van alle drie de functies in een lijst geretourneerd. |
hello |
De activiteitsfunctie, waarmee het werk wordt uitgevoerd dat is ingedeeld. De functie retourneert een eenvoudige begroeting voor de plaats die als argument is doorgegeven. |
http_start |
Een door HTTP geactiveerde functie waarmee een instantie van de indeling wordt gestart en een check status antwoord wordt geretourneerd. |
Notitie
Durable Functions biedt ook ondersteuning voor blauwdrukken voor Python v2-programmeermodellen. Als u blauwdrukken wilt gebruiken, registreert u uw blauwdrukfuncties met behulp van de duurzame klasse azure-functions U kunt de resulterende blauwdruk zoals gebruikelijk registreren. U kunt ons voorbeeld als voorbeeld gebruiken.
Opslagemulator configureren
U kunt Azurite, een emulator voor Azure Storage, gebruiken om de functie lokaal te testen. Stel in local.settings.json de waarde in voor AzureWebJobsStorage
UseDevelopmentStorage=true
de gewenste waarde in dit voorbeeld:
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "python"
}
}
Als u de Azurite-extensie wilt installeren en uitvoeren in Visual Studio Code, voert u in het opdrachtenpalet Het volgende in: Start en selecteer Enter.
U kunt andere opslagopties gebruiken voor uw Durable Functions-app. Zie Durable Functions-opslagproviders voor meer informatie over opslagopties en voordelen.
De functie lokaal testen
Azure Functions Core Tools biedt u de mogelijkheid om een Azure Functions-project uit te voeren op uw lokale ontwikkelcomputer. Als deze niet is geïnstalleerd, wordt u gevraagd deze hulpprogramma's te installeren wanneer u een functie voor het eerst start in Visual Studio Code.
Als u uw functie wilt testen, stelt u een onderbrekingspunt in de code van de
hello
activiteitsfunctie in. Selecteer F5 of selecteer Foutopsporing: Start Foutopsporing in het opdrachtpalet om het functie-app-project te starten. Uitvoer van Core Tools wordt weergegeven in het terminalpaneel.Notitie
Zie Durable Functions Diagnostics voor meer informatie over foutopsporing.
Kopieer in het terminalvenster het URL-eindpunt van uw door HTTP geactiveerde functie.
Gebruik uw browser of een HTTP-testhulpprogramma om een HTTP POST-aanvraag naar het URL-eindpunt te verzenden.
Vervang het laatste segment door de naam van de Orchestrator-functie (
hello_orchestrator
). De URL moet vergelijkbaar zijn methttp://localhost:7071/api/orchestrators/hello_orchestrator
.Het antwoord is het eerste resultaat van de HTTP-functie. Het laat u weten dat de duurzame indeling is gestart. Het eindresultaat van de indeling wordt nog niet weergegeven. De reactie bevat enkele nuttige URL's. Op dit moment voert u een query uit op de status van de indeling.
Kopieer de URL-waarde voor
statusQueryGetUri
, plak deze in de adresbalk van uw browser en voer de aanvraag uit. U kunt ook uw HTTP-testhulpprogramma blijven gebruiken om de GET-aanvraag uit te geven.De aanvraag voert een query uit op het indelingsexemplaar voor de status. U ziet dat het exemplaar is voltooid en dat het de uitvoer of resultaten van de duurzame functie bevat. Het ziet er ongeveer als volgt uit:
{ "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" }
Als u de foutopsporing wilt stoppen, selecteert u Shift+F5 in Visual Studio Code.
Nadat u hebt gecontroleerd of de functie correct wordt uitgevoerd op uw lokale computer, is het tijd om het project te publiceren naar Azure.
Aanmelden bij Azure
Voordat u Azure-resources kunt maken of uw app kunt publiceren, moet u zich aanmelden bij Azure.
Als u nog niet bent aangemeld, selecteert u in de activiteitenbalk het Azure-pictogram. Selecteer vervolgens onder Resources aanmelden bij Azure.
Als u al bent aangemeld en uw bestaande abonnementen kunt zien, gaat u naar de volgende sectie. Als u nog geen Azure-account hebt, selecteert u Een Azure-account maken. Leerlingen/studenten kunnen een Azure for Students-account maken selecteren.
Wanneer u hierom wordt gevraagd in de browser, selecteert u uw Azure-account en meldt u zich aan met behulp van uw Azure-accountreferenties. Als u een nieuw account maakt, kunt u zich aanmelden nadat uw account is gemaakt.
Nadat u zich hebt aangemeld, kunt u het nieuwe browservenster sluiten. De abonnementen die deel uitmaken van uw Azure-account, worden weergegeven in de zijbalk.
De functie-app maken in Azure
In deze sectie maakt u een functie-app in het Flex Consumption-abonnement, samen met gerelateerde resources in uw Azure-abonnement. Veel van de beslissingen voor het maken van resources worden voor u gemaakt op basis van standaardgedrag. Voor meer controle over de gemaakte resources moet u in plaats daarvan uw functie-app maken met geavanceerde opties.
Selecteer F1 in Visual Studio Code om het opdrachtenpalet te openen. Voer bij de prompt (
>
) Azure Functions in en selecteer deze: Functie-app maken in Azure.Geef bij de prompts de volgende informatie op:
Snel Actie Abonnement selecteren Selecteer het Azure-abonnement dat u wilt gebruiken. De prompt wordt niet weergegeven wanneer er slechts één abonnement zichtbaar is onder Resources. Voer de naam van een nieuwe functie-app in Voer een wereldwijd unieke naam in die geldig is in een URL-pad. De naam die u invoert, wordt gevalideerd om ervoor te zorgen dat deze uniek is in Azure Functions. Selecteer een locatie voor nieuwe resources Selecteer een Azure-regio. Voor betere prestaties selecteert u een regio bij u in de buurt. Alleen regio's die worden ondersteund door Flex Consumption-abonnementen worden weergegeven. Een runtimestack selecteren Selecteer de taalversie die u momenteel lokaal uitvoert. Resourceverificatietype selecteren Selecteer Beheerde identiteit. Dit is de veiligste optie voor het maken van verbinding met het standaardhostopslagaccount. In het deelvenster Azure: Activiteitenlogboek toont de Azure-extensie de status van afzonderlijke resources terwijl ze worden gemaakt in Azure.
Wanneer de functie-app wordt gemaakt, worden de volgende gerelateerde resources gemaakt in uw Azure-abonnement. De resources hebben een naam op basis van de naam die u hebt ingevoerd voor uw functie-app.
- Een resourcegroep, een logische container voor gerelateerde resources.
- Een functie-app, die de omgeving biedt voor het uitvoeren van uw functiecode. Met een functie-app kunt u functies groeperen in een logische eenheid, zodat u resources eenvoudiger kunt beheren, implementeren en delen binnen hetzelfde hostingabonnement.
- Een Azure-app Service-plan, waarmee de onderliggende host voor uw functie-app wordt gedefinieerd.
- Een standaard Azure Storage-account dat wordt gebruikt door de Functions-host voor het onderhouden van de status en andere informatie over uw functie-app.
- Een Application Insights-exemplaar dat is verbonden met de functie-app en waarmee het gebruik van uw functies in de app wordt bijgehouden.
- Een door de gebruiker toegewezen beheerde identiteit die wordt toegevoegd aan de rol Inzender voor opslagblobgegevens in het nieuwe standaardhostopslagaccount.
Nadat de functie-app is gemaakt en het implementatiepakket is toegepast, wordt er een melding weergegeven.
Aanbeveling
Standaard worden de Azure-resources die vereist zijn voor uw functie-app gemaakt op basis van de naam die u invoert voor uw functie-app. De resources worden standaard gemaakt met de functie-app in dezelfde, nieuwe resourcegroep. Als u de namen van de gekoppelde resources wilt aanpassen of bestaande resources opnieuw wilt gebruiken, publiceert u het project met geavanceerde opties voor maken.
Het project implementeren in Azure
Belangrijk
Als u implementeert in een bestaande functie-app, wordt de inhoud van die app altijd overschreven in Azure.
Voer in het opdrachtenpalet Azure Functions in en selecteer vervolgens Azure Functions: Implementeren in functie-app.
Selecteer de functie-app die u zojuist hebt gemaakt. Wanneer u wordt gevraagd om eerdere implementaties te overschrijven, selecteert u Implementeren om uw functiecode te implementeren in de nieuwe functie-app-resource.
Wanneer de implementatie is voltooid, selecteert u Uitvoer weergeven om de resultaten van het maken en implementeren weer te geven, inclusief de Azure-resources die u hebt gemaakt. Als u de melding mist, selecteert u het belpictogram in de rechterbenedenhoek om deze opnieuw te zien.
Uw functie testen in Azure
Kopieer de URL van de HTTP-trigger vanuit het uitvoervenster. De URL die uw door HTTP geactiveerde functie aanroept, moet deze indeling hebben:
https://<functionappname>.azurewebsites.net/api/orchestrators/hello_orchestrator
Plak de nieuwe URL voor de HTTP-aanvraag in de adresbalk van uw browser. Wanneer u de gepubliceerde app gebruikt, kunt u verwachten dat u hetzelfde statusantwoord krijgt dat u hebt ontvangen toen u lokaal hebt getest.
De Python Durable Functions-app die u hebt gemaakt en gepubliceerd met behulp van Visual Studio Code, is klaar voor gebruik.
Resources opschonen
Als u de resources die u hebt gemaakt niet meer nodig hebt om de quickstart te voltooien, verwijdert u de resourcegroep en alle gerelateerde resources om gerelateerde kosten in uw Azure-abonnement te voorkomen.
Gerelateerde inhoud
- Meer informatie over veelvoorkomende Durable Functions-app-patronen.
- Meer informatie over unit testen van durable functions in Python