Асинхронные запросы и операции

Выполнение в асинхронном режиме доступно только для запросов на загрузку, обновление и выгрузку данных, полученных по HTTP.

Запуск асинхронного запроса

Чтобы запустить запрос на загрузку, обновление или выгрузку данных в асинхронном режиме, отправьте HTTP-запрос query с флагом async, имеющим значение true.

Ответ на асинхронный запрос

При получении асинхронного запроса система возвращает ответ с идентификатором requestId, подтверждающим начало выполнения операции. Статус обработки операции можно отследить, как описано в секции ниже.

Значение requestId равно значению x-request-id, переданному в заголовке запроса. Если x-request-id отсутствует в заголовке, значение requestId генерируется системой.

Пример ответа на асинхронный запрос с корректным синтаксисом:

{
  "requestId": "e3793ee4-8e63-4d83-9fba-0af49f9c251f",
  "message": "Async operation started"
}

Пример ответа на асинхронный запрос с некорректным синтаксисом:

{
  "exceptionMessage": "Error parsing query"
}

Отслеживание статуса асинхронной операции

Статус обработки асинхронных операций можно отслеживать с помощью GET-методов query/{requestId} и queries.

Ограничения асинхронных операций

  • Асинхронное выполнение доступно только для запросов загрузки, обновления и выгрузки данных; для остальных запросов признак async игнорируется.
  • Предполагается, что в одной инсталляции системы одновременно выполняется небольшое количество асинхронных запросов (до ~100 запросов).
  • Параллельное выполнение нескольких асинхронных операций в одной таблице недоступно.
  • Информация об ошибке асинхронной операции в таблице хранится до появления новой асинхронной операции в этой таблице.
  • Запуск асинхронной операции невозможен, если уже существует асинхронная операция с таким же идентификатором requestId.
  • В идентификаторе requestId не поддерживаются следующие символы (подробнее см. в документации ZooKeeper):
    • точка или две точки без добавления других символов;
    • спецсимволы Unicode;
    • строка zookeeper без добавления других символов.