Отправить асинхронный HTTP-запрос к развернутой модели
Асинхронные HTTP-запросы позволяют:
-
Параллельно обрабатывать несколько запросов.
-
Обрабатывать «тяжелые» предсказания, для которых требуется больше одной минуты.
Таймауты
С помощью таймаутов можно устанавливать ограничения на время обработки асинхронного запроса.
При отправке асинхронных вызовов возможно задать три вида таймаутов (через заголовок):
-
X-Health-Timeout — ограничение на проверку работоспособности сервиса с моделью, созданного при асинхронном запросе (значение устанавливается в секундах, по умолчанию — 120).
-
X-Request-Timeout— ограничение на время обработки асинхронного запроса (значение устанавливается в секундах, по умолчанию — 300).
-
X-Full-Live-Timeout — ограничение на общее время жизни сервиса с моделью, созданного при асинхронном запросе (значение устанавливается в секундах, по умолчанию — None).
В случае неуспешного выполнения вызова он повторяется, пока не исчерпает пять попыток или пока не превысит X-Full-Live-Timeout, если он был задан. После превышения одного из этих лимитов вызов помечается завершенным с ошибкой, повторная отправка не производится.
Общее время жизни равно сумме времени на проверку работоспособности и времени на обработку асинхронного запроса.
Особенности асинхронных запросов
-
Размер данных, получаемых от деплоя через асинхронный запрос, не должен превышать 1 МБ. При необходимости получать данные сверх этого значения рекомендуется загрузить их в какое-либо хранилище, например S3.
-
Для отправки асинхронного вызова не нужна авторизация, не требуется получать Long API Keys.
-
Возможно отправлять вызовы с использованием ключа из вкладки Управление ключами.
-
Асинхронному вызову присваивается уникальный идентификатор Request ID — c05541b6-882a-4c25-8bba-865907e60c69. Request ID нужно использовать для получения статуса асинхронного вызова.
-
Для асинхронных запросов создаются отдельные асинхронные экземпляры деплоя.
-
Отсутствуют ограничения на количество асинхронных экземпляров деплоя, обрабатывающих асинхронные вызовы.
-
Временно недоступен просмотр логов для асинхронных запросов и их мониторинг.
Отправить асинхронный запрос, используя ключ
-
В главном меню сервиса перейдите в Deployments → Деплои.
-
Перейдите в карточку нужного деплоя.
-
Во вкладке Управление ключами нажмите Сгенерировать ключ.
-
Нажмите cURL, чтобы скопировать запрос.
-
Добавьте к запросу заголовок вида — 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"}' -
Отправьте запрос.
-
Проверьте результаты выполнения запроса одним из двух способов.
Работа с асинхронными запросами
Для получения списка асинхронных вызовов используйте метод Get Async Inferences.
Для проверки статуса асинхронного вызова используйте метод Get Async Inference Status.
Для проверки результатов асинхронного вызова:
Перейдите во вкладку Асинхронные вызовы карточки деплоя и в меню
и нажмите Получить результат запроса. Результат будет загружен в формате json.
Используйте метод Get Async Inference Result.
- Таймауты
- Особенности асинхронных запросов
- Отправить асинхронный запрос, используя ключ
- Работа с асинхронными запросами