Del via


Langvarige operasjoner

En langvarig operasjon (LRO) er en asynkron tidkrevende oppgave som tillater asynkron avspørring samtidig som respons og skalerbarhet opprettholdes. Avspørring refererer til klientmønsteret som kreves for å kontrollere operasjonsstatusen regelmessig til operasjonen er fullført.

I sammenheng med nettjenester og API-er refererer LROer til oppgaver eller prosesser som krever en betydelig mengde tid til å utføre, noe som gjør LROer uegnet for umiddelbar fullføring innen én enkelt forespørselsresponssyklus.

Eksempler på slike operasjoner inkluderer store dataopplastinger, komplekse beregninger, satsvis behandling eller ressursklargjøring i skymiljøer. Ikke alle langvarige operasjoner har et resultat i Fabric. Noen operasjoner kjøres bare til fullføring uten å gi noen url-adresse for resultat.

API-spesifikasjon

En API som bruker LRO-infrastrukturen, returnerer ett av to vellykkede resultater:

  • HTTP-statuskode 200 OK eller 201 OPPRETTET – Svarteksten inneholder API-resultatet hvis det finnes et resultat.
  • HTTP-statuskode 202 Godtatt – svarteksten er tom.

Tre svaroverskrifter legges automatisk til av LRO-infrastrukturen:

  • Location header: Inneholder URL-adressen for undersøkelse av operasjonens status.
  • x-ms-operation-id header: Inneholder operasjons-ID-en, som kan brukes til å konstruere URL-adressen for operasjonsstatus.
  • Retry-After header: Inneholder et heltall som representerer antall sekunder en innringer bør vente før du spør om operasjonens status.

Avstemning om tilstand og få resultat

Det finnes to fremgangsmåter du kan ta for avstemning om tilstand og få resultatet når operasjonen er fullført:

  • Bruk plasseringshode: Plasseringshodet som returneres mens operasjonen kjører, er API-en Hent operasjonstilstand med operasjons-ID-en for den pågående operasjonen. Når operasjonen er fullført, returneres plasseringshodet som returneres, API-en for Hent operasjonsresultat med operasjons-IDen og resultatet.

  • Ved hjelp av x-ms-operation-id-: du kan bygge API-kall som returneres i operasjonshodet ved hjelp av x-ms-operation-id-toppteksten som returneres i svaret fra det første kallet. Dra tilstanden med Get Operation State API, ved hjelp av operasjons-ID-en, og få resultatet med Hent operasjonsresultat-API (ved hjelp av operasjons-IDen).

C#-kodeeksempel for undersøkelse av operasjonstilstanden

// 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"); 

Eksempel på oppretting av element

Dette er et eksempel på en LRO-operasjon. I dette eksemplet opprettet brukeren to notatblokker.

Trinn 1: Opprette to notatblokker

Opprett to notatblokker.

Trinn 2: Avspørre notatblokkene

Avspørr notatblokk-kremeringen ved hjelp av Hent operasjonsstatus.

Notatblokk 1 – returnerer 201. Operasjonen er fullført.

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

Notatblokk 2 – returnerer 202. Operasjonen er ikke fullført. Notatblokk 2 er ikke opprettet.

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

Trinn 3: Undersøkelsesnotatblokk 2

Vent 20 minutter, og avspørr notatblokken 2 ved hjelp av Get Operation State.

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

Notatblokk 2 – returnerer 201. Operasjonen er fullført. Notatblokk 2 er opprettet.

Operasjonen er fullført – fikk 200-OK http-statuskode. Svartekst:

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

Trinn 4: Få operasjonsresultat for notatblokk 2

Få operasjonsresultatet for notatblokken 2 med Hent operasjonsresultat.

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

Notatblokk 2 – returnerer 200. Notatblokk 2 er opprettet.

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