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

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

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

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

Таймауты

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. В главном меню платформы перейдите в Deployments → Деплои.

  2. Перейдите в карточку нужного деплоя.

  3. Во вкладке Управление ключами нажмите Сгенерировать ключ.

  4. Нажмите cURL, чтобы скопировать запрос.

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

    curl --location --request POST 'https://api.ai.cloud.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"}'
    
  6. Отправьте запрос.

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

Работа с асинхронными запросами

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

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

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

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

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

Масштабная конференция
GoCloud 2024:
облачные грани будущего