Delen via


Langlopende bewerkingen

Een doorlopende bewerking (LRO) is een asynchrone, tijdintensieve taak die asynchrone polling mogelijk maakt terwijl de responsiviteit en schaalbaarheid behouden blijven. Polling verwijst naar het clientpatroon dat nodig is om de bewerkingsstatus periodiek te controleren totdat de bewerking is voltooid.

In de context van webservices en API's verwijzen LRO's naar taken of processen waarvoor een aanzienlijke hoeveelheid tijd nodig is om uit te voeren, waardoor LRO's niet geschikt zijn voor onmiddellijke voltooiing binnen één aanvraagresponscyclus.

Voorbeelden van dergelijke bewerkingen zijn het uploaden van grote gegevens, complexe berekeningen, batchverwerking of het inrichten van resources in cloudomgevingen. Niet alle langlopende bewerkingen hebben een resultaat in Fabric. Sommige bewerkingen worden gewoon uitgevoerd tot voltooiing zonder enige resultaat-URL op te geven.

API-specificatie

Een API die gebruikmaakt van de LRO-infrastructuur retourneert een van de twee succesvolle resultaten:

  • HTTP-statuscode 200 OK of 201 GEMAAKT: de hoofdtekst van het antwoord bevat het API-resultaat als er een resultaat bestaat.
  • HTTP-statuscode 202 Geaccepteerd: de hoofdtekst van het antwoord is leeg.

Drie antwoordheaders worden automatisch toegevoegd door de LRO-infrastructuur:

  • Location header: Bevat de URL voor het peilen van de status van de bewerking.
  • x-ms-operation-id header: Bevat de bewerkings-id, die kan worden gebruikt om de URL van de bewerkingsstatus te maken.
  • Retry-After header: Bevat een geheel getal dat het aantal seconden aangeeft dat een aanroeper moet wachten voordat een query wordt uitgevoerd op de status van de bewerking.

Het controleren van de status en het ophalen van het resultaat

Er zijn twee benaderingen die u kunt uitvoeren voor polling op status en het resultaat ophalen zodra de bewerking is voltooid:

  • Locatieheader gebruiken: de locatieheader die wordt geretourneerd terwijl de bewerking wordt uitgevoerd, is de Get Operation State API met de bewerkings-ID voor de lopende bewerking. Zodra de bewerking is uitgevoerd, is de geretourneerde locatieheader de GET Operation Result-API met de bewerkings-id en het resultaat.

  • Door x-ms-operation-id te gebruiken, kunt u API-aanroepen bouwen die in de bewerkingsheader worden opgenomen met de x-ms-operation-id-header, die wordt geretourneerd in het antwoord van de eerste aanroep. Haal de status op met de Api Voor bewerkingsstatus ophalen, met behulp van de bewerkings-id en haal het resultaat op met de API Voor bewerkingsresultaten ophalen (met behulp van de bewerkings-id).

C#-codevoorbeeld voor het peilen van de bewerkingsstatus

// Get operationUrl from location header or by building it with operation ID and Get State API.  
do 
{ 
  Thread.Sleep(retryAfter * 1000); // Get retryAfter value from Retry-After header. 
  response = client.GetAsync(operationUrl).Result;  
  jsonOperation = response.Content.ReadAsStringAsync().Result; 
  operation = JsonSerializer.Deserialize<FabricOperation>(jsonOperation); 
} while (operation.status != "Succeeded" && operation.status != "Failed"); 

Voorbeeld van het maken van items

Dit is een voorbeeld van een LRO-bewerking. In dit voorbeeld heeft de gebruiker twee notitieblokken gemaakt.

Fase 1: Twee notebooks maken

Maak twee notitieblokken.

Fase 2: De notebooks opvragen

Peil de notitieblokcretie met behulp van De bewerkingsstatus ophalen.

Notebook 1 - Retourneert 201. De bewerking is voltooid.

{ 
  "id": "551e6a4d-d81a-4079-b08c-25cec3cebba9", 
  "type": "Notebook", 
  "displayName": "Notebook1", 
  "description": "", 
  "workspaceId": "a91e61ef-862e-4611-9d09-9c7cc07b2519" 
} 

Notebook 2 - Retourneert 202. De bewerking is niet voltooid. Notebook 2 is niet aangemaakt.

{ 
"status": "Running", 
"createdTimeUtc": "2023-11-13T22:24:40.477Z", 
"lastUpdatedTimeUtc": "2023-11-13T22:24:41.532Z", 
"percentComplete": 25 
} 

Fase 3: Poll notebook 2

Wacht 20 minuten en controleer vervolgens notebook 2 met de functie Get Operation State.

GET https://api.fabric.microsoft.com/v1/operations/b80e135a-adca-42e7-aaf0-59849af2ed78

Notebook 2 - Retourneert 201. De bewerking is voltooid. Notebook 2 wordt gemaakt.

De bewerking is voltooid- er is een http-statuscode van 200-OK verkregen. Hoofdtekst van antwoord:

{ 
  "status": "Succeeded", 
  "createdTimeUtc": "2023-11-13T22:25:06.1193103", 
  "lastUpdatedTimeUtc": "2023-11-13T22:25:09.0255787", 
  "percentComplete": 100, 
  "error": null 
} 

Fase 4: Het resultaat van de bewerking van notitieblok 2 ophalen

Haal het bewerkingsresultaat voor notebook 2 op met Resultaat bewerking ophalen.

GET https://api.fabric.microsoft.com/v1/operations/b80e135a-adca-42e7-aaf0-59849af2ed78/result

Notebook 2 - Retourneert 200. Notebook 2 wordt gemaakt.

{ 
"id": "221a6eea-0f27-41eb-bcc5-e4d7b216ed43", 
"type": "Notebook", 
"displayName": " Notebook2", 
"description": "", 
"workspaceId": "a91e61ef-862e-4611-9d09-9c7cc07b2519" 
}