แชร์ผ่าน


การปฏิบัติงานที่ยาวนาน

การดําเนินการที่ใช้เวลานาน (LRO) เป็นงานที่ใช้เวลานานแบบอะซิงโครนัส ซึ่งช่วยให้การโพลล์แบบอะซิงโครนัสในขณะที่ยังคงรักษาการตอบสนองและการปรับขนาด การโพลล์อ้างอิงถึงรูปแบบไคลเอ็นต์ที่จําเป็นในการตรวจสอบสถานะการดําเนินการเป็นระยะ ๆ จนกว่าการดําเนินการจะเสร็จสมบูรณ์

ในบริบทของบริการเว็บและ API LROs หมายถึงงานหรือกระบวนการที่จําเป็นต้องมีระยะเวลาในการดําเนินการทําให้ LROs ไม่เหมาะสมสําหรับการทําให้เสร็จสมบูรณ์ทันทีภายในรอบการตอบกลับคําขอเดียว

ตัวอย่างของการดําเนินการดังกล่าวรวมถึงการอัปโหลดข้อมูลขนาดใหญ่ การคํานวณที่ซับซ้อน การประมวลผลชุดงาน หรือการจัดเตรียมทรัพยากรในสภาพแวดล้อมระบบคลาวด์ การดําเนินการทํางานที่นานทั้งหมดไม่ได้มีผลใน Fabric การดําเนินการบางอย่างเพียงแค่ทํางานจนเสร็จสมบูรณ์โดยไม่ต้องให้ URL ผลลัพธ์ใด ๆ

ข้อมูลจําเพาะของ API

API ที่ใช้โครงสร้างพื้นฐานของ LRO จะส่งกลับผลลัพธ์ที่สําเร็จหนึ่งรายการจากสองรายการ:

  • รหัสสถานะ HTTP 200 ตกลง หรือ 201 CREATED - เนื้อหาคําตอบประกอบด้วยผลลัพธ์ API ถ้ามีผลลัพธ์อยู่
  • ยอมรับรหัสสถานะ HTTP 202 - เนื้อความการตอบสนองว่างเปล่า

ส่วนหัวของการตอบกลับสามรายการจะถูกเพิ่มโดยอัตโนมัติโดยโครงสร้างพื้นฐาน LRO:

  • Location header: มี URL สําหรับการโพลล์สถานะของการดําเนินการ
  • x-ms-operation-id header: มี ID การดําเนินการ ซึ่งสามารถใช้เพื่อสร้าง URL สถานะการดําเนินการ
  • Retry-After header: ประกอบด้วยจํานวนเต็มที่แสดงจํานวนวินาทีที่ผู้เรียกควรรอก่อนที่จะสอบถามสถานะของการดําเนินการ

การโพลล์ในสถานะและได้รับผลลัพธ์

คุณสามารถใช้สองวิธีในการโพลล์ในสถานะและรับผลลัพธ์เมื่อการดําเนินการเสร็จสมบูรณ์:

  • การใช้ ส่วนหัวของตําแหน่งที่ตั้ง: ส่วนหัวของตําแหน่งที่ตั้งที่ส่งกลับในขณะที่การดําเนินการกําลังทํางาน คือ รับ Operation State API ที่มี ID การดําเนินการสําหรับการดําเนินการที่กําลังดําเนินอยู่ เมื่อการดําเนินการทํางานเสร็จสมบูรณ์ ส่วนหัวของตําแหน่งที่ตั้งที่ส่งกลับจะเป็น รับผลลัพธ์การดําเนินการ API ที่มี ID การดําเนินการและผลลัพธ์

  • การใช้ x-ms-operation-id: คุณสามารถสร้างการเรียกใช้ API ที่ส่งกลับในส่วนหัวของการดําเนินการโดยใช้ x-ms-operation-id header ที่ส่งกลับในการตอบสนองของการเรียกเริ่มต้น ดึงสถานะด้วยรับสถานะการดําเนินการ API โดยใช้ ID การดําเนินการและรับผลลัพธ์ด้วยรับ API ผลลัพธ์การดําเนินการ (โดยใช้ ID การดําเนินการ)

ตัวอย่างรหัส C# สําหรับการโพลล์สถานะการดําเนินการ

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

ตัวอย่างการสร้างรายการ

นี่คือตัวอย่างของการดําเนินการ LRO ในตัวอย่างนี้ ผู้ใช้สร้างสมุดบันทึกสองเล่ม

ลําดับขั้นที่ 1: สร้างสมุดบันทึกสองเล่ม

สร้างสมุดบันทึกสองเล่ม

ลําดับขั้นที่ 2: สํารวจสมุดบันทึก

สํารวจการเพิ่มขึ้นของสมุดบันทึกโดยใช้ รับสถานะการดําเนินการ

Notebook 1 - 201ส่งกลับ การดําเนินงานเสร็จสมบูรณ์

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

สมุดบันทึก 2 - 202การส่งกลับ การดําเนินการไม่เสร็จสมบูรณ์ สมุดบันทึก 2 ไม่ได้ถูกสร้างขึ้น

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

ลําดับขั้นที่ 3: แบบสํารวจสมุดบันทึก 2

รอ 20 นาที จากนั้นทําการสํารวจสมุดบันทึก 2 โดยใช้ รับสถานะการดําเนินการ

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

สมุดบันทึก 2 - 201การส่งกลับ การดําเนินงานเสร็จสมบูรณ์ สมุดบันทึก 2 จะถูกสร้างขึ้น

การดําเนินการเสร็จสมบูรณ์ - มีรหัสสถานะ http 200 ตกลง ร่างกายตอบสนอง:

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

ลําดับขั้นที่ 4: รับผลการดําเนินการของสมุดบันทึก 2

รับผลลัพธ์การดําเนินการสําหรับสมุดบันทึก 2 ที่มี รับผลการดําเนินการ

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

สมุดบันทึก 2 - 200การส่งกลับ สมุดบันทึก 2 จะถูกสร้างขึ้น

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