Aracılığıyla paylaş


Uzun süreli işlemler

Uzun süreli bir işlem (LRO), yanıt hızını ve ölçeklenebilirliği korurken asenkron sorgulamaya olanak tanıyan, zaman alan asenkron bir görevdir. Yoklama, işlem tamamlanana kadar düzenli aralıklarla işlem durumunu denetlemek için gereken istemci desenini ifade eder.

Web hizmetleri ve API'ler bağlamında, LRO'lar, yürütülmesi önemli miktarda zaman gerektiren görevler veya işlemler anlamına gelir ve bu da LRO'ları tek bir istek-yanıt döngüsü içinde anında tamamlanması için uygun hale getirmez.

Bu tür işlemlere örnek olarak büyük veri yüklemeleri, karmaşık hesaplamalar, toplu işlem veya bulut ortamlarında kaynak sağlama verilebilir. Uzun süre çalışan işlemlerin tümünün Fabric'te bir sonucu yoktur. Bazı işlemler herhangi bir sonuç URL'si sağlamadan tamamlanır.

API Belirtimi

LRO altyapısını kullanan bir API, iki başarılı sonuçtan birini döndürür:

  • HTTP durum kodu 200 Tamam veya 201 OLUŞTURULDU - Yanıt gövdesi, bir sonuç varsa API sonucunu içerir.
  • HTTP durum kodu 202 Kabul Edildi - Yanıt gövdesi boş.

LRO altyapısı tarafından otomatik olarak üç yanıt üst bilgisi eklenir:

  • Location header: İşlemin durumunu yoklama URL'sini içerir.
  • x-ms-operation-id header: İşlem durumu URL'sini oluşturmak için kullanılabilecek işlem kimliğini içerir.
  • Retry-After header: Çağıranın işlemin durumunu sorgulamadan önce beklemesi gereken saniye sayısını temsil eden bir tamsayı içerir.

Durumu yoklama ve sonuç alma

Durum sorgulama ve işlemin tamamlanmasından sonra sonucu almak için kullanabileceğiniz iki yaklaşım vardır.

  • Konum üst bilgisini kullanma: İşlem çalışırken döndürülen konum üst bilgisi, devam eden işlemin işlem kimliğine sahip İşlem Durumunu Al API'sidir. İşlem çalıştırıldıktan sonra döndürülen konum üst bilgisi, işlem kimliği ve sonucu içeren İşlem Sonucunu Al API'si olur.

  • x-ms-operation-id kullanarak: İlk çağrının yanıtında döndürülen x-ms-operation-id üst bilgisini kullanarak işlem üst bilgisinde döndürülen API çağrıları oluşturabilirsiniz. İşlem kimliğini kullanarak get operation State API ile durumu çekin ve Get Operation Result API (işlem kimliğini kullanarak) ile sonucu alın.

İşlem durumunu yoklama için C# kod örneği

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

Öğe oluşturma örneği

Bu bir LRO işlemi örneğidir. Bu örnekte kullanıcı iki not defteri oluşturmuştur.

1. Aşama: İki not defteri oluşturma

İki not defteri oluşturun.

2. Aşama: Not defterlerini yoklama

İşlem Durumunu Al'ı kullanarak not defteri oluşturma işlemini yoklayın.

Not Defteri 1 - geri döner 201. İşlem tamamlandı.

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

Not Defteri 2 - İade eder 202. İşlem tamamlanmadı. Not Defteri 2 oluşturulmadı.

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

3. Aşama: Anket not defteri 2

20 dakika bekleyin, ardından İşlem Durumunu Al'ı kullanarak not defteri 2'yi yoklayın.

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

Notebook 2 - İadesini alır 201. İşlem tamamlandı. Not defteri 2 oluşturulur.

İşlem tamamlandı - 200-OK http durum kodu alındı. Yanıt gövdesi:

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

4. Aşama: "Not Defteri 2" işlem sonucunu alma

İşlem Sonucunu Al ile not defteri 2 için işlem sonucunu alın.

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

Not Defteri 2 - döner 200. 2 numaralı not defteri oluşturuldu.

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