Freigeben über


Langlaufende Vorgänge

Ein lang andauernder Vorgang (Long Running Operation, LRO) ist eine asynchrone, zeitintensive Aufgabe, die asynchrones Abfragen zulässt und gleichzeitig die Reaktionsfähigkeit und Skalierbarkeit aufrechterhalten kann. Die Abfrage bezieht sich auf das Clientmuster, das erforderlich ist, um den Vorgangsstatus regelmäßig zu überprüfen, bis der Vorgang abgeschlossen ist.

Im Kontext von Webdiensten und APIs verweisen LROs auf Aufgaben oder Prozesse, die eine erhebliche Zeit für die Ausführung erfordern, wodurch LROs für den sofortigen Abschluss innerhalb eines einzelnen Anforderungsantwortzyklus ungeeignet sind.

Beispiele für solche Vorgänge sind Große Datenuploads, komplexe Berechnungen, Batchverarbeitung oder Ressourcenbereitstellung in Cloudumgebungen. Nicht alle lang andauernden Vorgänge haben ein Ergebnis in Fabric. Einige Vorgänge laufen einfach bis zum Ende, ohne eine Ergebnis-URL bereitzustellen.

API-Spezifikation

Eine API, die die LRO-Infrastruktur verwendet, gibt eines von zwei erfolgreichen Ergebnissen zurück:

  • HTTP-Statuscode 200 OK oder 201 CREATED – Der Antworttext enthält das API-Ergebnis, wenn ein Ergebnis vorhanden ist.
  • HTTP-Statuscode 202 Akzeptiert – Der Antworttext ist leer.

Drei Antwortheader werden automatisch von der LRO-Infrastruktur hinzugefügt:

  • Location header: Enthält die URL zum Abrufen des Vorgangsstatus.
  • x-ms-operation-id header: Enthält die Vorgangs-ID, die zum Erstellen der Vorgangsstatus-URL verwendet werden kann.
  • Retry-After header: Enthält eine ganze Zahl, die die Anzahl von Sekunden darstellt, die ein Aufrufer warten soll, bevor der Status des Vorgangs abgefragt wird.

Abfragen des Zustands und Abrufen des Ergebnisses

Es gibt zwei Ansätze, die Sie zum Abrufen des Zustands und zum Abrufen des Ergebnisses ausführen können, sobald der Vorgang abgeschlossen ist:

  • Verwenden des Location-Headers: Der zurückgegebene Location-Header während der Ausführung des Vorgangs ist die Get Operation State-API mit der Vorgangs-ID für den laufenden Vorgang. Nach Abschluss der Ausführung des Vorgangs ist der zurückgegebene Positionsheader die Get Operation Result-API mit der Vorgangs-ID und dem Ergebnis.

  • Mit x-ms-operation-id: Sie können API-Aufrufe erstellen, die im Vorgangsheader zurückgegeben werden, mithilfe des x-ms-operation-id-Headers, der in der Antwort des ersten Aufrufs zurückgegeben wird. Rufen Sie den Zustand mit der API zum Abrufen des Vorgangsstatus mithilfe der Vorgangs-ID ab, und rufen Sie das Ergebnis mit der API zum Abrufen des Vorgangsergebnis ab (mithilfe der Vorgangs-ID).

C#-Codebeispiel zum Abrufen des Vorgangszustands

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

Beispiel für die Elementerstellung

Dies ist ein Beispiel für einen LRO-Vorgang. In diesem Beispiel hat der Benutzer zwei Notizbücher erstellt.

Phase 1: Erstellen von zwei Notizbüchern

Erstellen Sie zwei Notizbücher.

Stufe 2: Abfragen der Notizbücher

Rufen Sie die Notebookerstellung mithilfe des Vorgangszustandsab.

Notebook 1 - Gibt zurück 201. Der Vorgang ist abgeschlossen.

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

Notebook 2 – Gibt zurück 202. Der Vorgang ist nicht abgeschlossen. Notebook 2 wird nicht erstellt.

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

Phase 3: Umfragenotizbuch 2

Warten Sie 20 Minuten, und rufen Sie dann das Notebook 2 mithilfe des Vorgangsstatusab.

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

Notebook 2 – Gibt zurück 201. Der Vorgang ist abgeschlossen. Notizbuch 2 wird erstellt.

Der Vorgang ist abgeschlossen – HTTP-Statuscode 200-OK wurde erhalten. Antworttext:

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

Phase 4: Ergebnis des Notizbuch-2-Vorgangs abrufen

Rufen Sie das Vorgangsergebnis für Notizbuch 2 mit "Vorgangsergebnis abrufen" ab.

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

Notebook 2 – Gibt zurück 200. Notizbuch 2 wird erstellt.

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