Отправить асинхронный HTTP-запрос к развернутой модели

Асинхронные HTTP-запросы позволяют:

  • Параллельно обрабатывать несколько запросов.

  • Обрабатывать «тяжелые» предсказания, для которых требуется больше одной минуты.

С помощью таймаутов можно устанавливать ограничения на время обработки асинхронного запроса.

При отправке асинхронных вызовов возможно задать три вида таймаутов (через заголовок):

  • X-Health-Timeout — ограничение на проверку работоспособности сервиса с моделью, созданного при асинхронном запросе (значение устанавливается в секундах, по умолчанию — 120).

  • X-Request-Timeout— ограничение на время обработки асинхронного запроса (значение устанавливается в секундах, по умолчанию — 300).

  • X-Full-Live-Timeout — ограничение на общее время жизни сервиса с моделью, созданного при асинхронном запросе (значение устанавливается в секундах, по умолчанию — None).

В случае неуспешного выполнения вызова, он повторяется до превышения пяти попыток, либо до превышения X-Full-Live-Timeout, если он был задан. После превышения одного из этих лимитов вызов помечается завершенным с ошибкой и повторная отправка больше не производится.

Общее время жизни равно сумме времени на проверку работоспособности и времени на обработку асинхронного запроса.

  • Асинхронному вызову присваивается уникальный идентификатор Request ID — c05541b6-882a-4c25-8bba-865907e60c69. Request ID нужно использовать для получения статуса асинхронного вызова.

  • Для получения списка асинхронных вызовов используйте метод Get Async Inferences.

  • Для проверки статуса асинхронного вызова используйте метод Get Async Inference Status.

  • Для отправки асинхронного вызова не нужна авторизация. Не требуется получать Long API Keys.

  • Возможно отправлять вызовы с использованием ключа из вкладки Управление ключами.

  • Для асинхронных запросов создаются отдельные асинхронные экземпляры деплоя.

  • Отсутствуют ограничения на количество асинхронных экземпляров деплоя, обрабатывающих асинхронные вызовы.

  • Временно недоступен просмотр логов для асинхронных запросов и их мониторинг.

  • Для проверки результатов асинхронного вызова:

    • Перейдите во вкладку Асинхронные вызовы карточки деплоя и в меню Кнопка с тремя вертикальными точками и нажмите Получить результат запроса. Результат будет загружен в формате json.

    • Используйте метод Get Async Inference Result.

Отправить асинхронный вызов, используя ключ

  1. Получите ключ во вкладке Управление ключами.

  2. Добавьте к запросу заголовок вида — X-Async-Request: true. В результате запрос примет следующий вид:

    curl --location --request POST 'https://api.aicloud.sbercloud.ru/public/v2/async_inferences/v1/{cluster}/{inference_name}/{predict}' \
    --header 'x-workspace-id: {workspace_id}' \
    --header 'x-api-key: {key}' \
    --header 'X-Async-Request: true' \
    --header 'Content-Type: application/json' \
    --data-raw '{"key": "value"}'
    
  3. Отправьте запрос.

  4. Проверьте результаты выполнения запроса одним из двух способов.