Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Длительная операция (LRO) — это асинхронная времязатратная задача, которая позволяет выполнять асинхронный опрос, сохраняя при этом скорость реагирования и масштабируемость. Опрос ссылается на шаблон клиента, необходимый для периодической проверки состояния операции до завершения операции.
В контексте веб-служб и API LROs относятся к задачам или процессам, которым требуется значительное время выполнения, что делает LROs непригодными для немедленного завершения в рамках одного цикла ответа на запрос.
Примеры таких операций включают передачу больших данных, сложные вычисления, пакетную обработку или подготовку ресурсов в облачных средах. Не все длительные операции имеют результат в Fabric. Некоторые операции просто выполняются до завершения без предоставления URL-адреса результата.
Спецификация API
API, использующий инфраструктуру LRO, возвращает один из двух успешных результатов:
- Код состояния HTTP 200 OK или 201 CREATE — текст ответа содержит результат API, если результат существует.
- Код состояния HTTP 202 Принят. Текст ответа пуст.
Три заголовка ответа автоматически добавляются инфраструктурой LRO:
-
Location header
: содержит URL-адрес для опроса состояния операции. -
x-ms-operation-id header
: содержит идентификатор операции, который можно использовать для создания URL-адреса состояния операции. -
Retry-After header
: содержит целое число, представляющее количество секунд, которое вызывающий объект должен ждать, прежде чем запрашивать состояние операции.
Опрос состояния и получение результата
Существует два подхода, которые можно использовать для мониторинга состояния и получения результата после завершения операции.
Использование заголовка расположения: возвращаемый заголовок во время выполнения операции указывает на API "Получить состояние операции" с идентификатором текущей операции. После завершения выполнения операции возвращается заголовок локации — API для получения результата операции с идентификатором операции и результатом.
Используя x-ms-operation-id: можно создавать вызовы API, возвращаемые в заголовке операции, с помощью заголовка x-ms-operation-id, возвращаемого в ответе на начальный вызов. Извлеките состояние с помощью API получения состояния операции, используя идентификатор операции, и получите результат с помощью API получения результатов операции (с использованием идентификатора операции).
Пример кода 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. Опрос записных книжек
Опрос состояния создания записной книжки с помощью Get Operation State.
Записная книжка 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-OK. Текст ответа:
{
"status": "Succeeded",
"createdTimeUtc": "2023-11-13T22:25:06.1193103",
"lastUpdatedTimeUtc": "2023-11-13T22:25:09.0255787",
"percentComplete": 100,
"error": null
}
Этап 4. Получение результата операции тетради №2
Получите результат операции для записной книжки 2 с помощью Get Operation Result.
ПОЛУЧИТЬ 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"
}