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

Какие виды таймаутов можно задавать в заголовке асинхронного вызова?

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

  • X_Health_Timeout — таймаут на проверку работоспособности асинхронных вызовов (значение устанавливается в секундах, по умолчанию — 10).

  • X_Request_Timeout— таймаут на время ответа асинхронных вызовов (значение устанавливается в секундах, по умолчанию — 100).

  • X_Full_Live_Timeout — таймаут на общее время доступности инференса (значение устанавливается в секундах, по умолчанию — None).

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

Почему могут возникать проблемы при выполнении асинхронного вызова?

Проблемы при выполнении асинхронного вызова могут происходить по следующим причинам:

  • Неправильный X_Health_Endpoint (по умолчанию он ожидается на /). Со стороны сервиса происходит пять попыток пересоздания, в случае неуспешных дальнейших попыток возникает ошибка.

  • Время ответа деплоя на метод X_Health_Endpoint дольше, чем 120 секунд (таймаут проверки health по умолчанию). Со стороны сервиса происходит пять попыток пересоздания, в случае неуспешных дальнейших попыток возникает ошибка.

  • Деплой слишком долго выполняет предикт (дольше X_Request_Timeout = 300 секунд по умолчанию). Со стороны сервиса происходит пять попыток пересоздания, в случае неуспешных дальнейших попыток возникает ошибка.

Для устранения возникших проблем попробуйте создать асинхронный вызов, дополнительно указав заголовок X-Request-Timeout: 5000.

Подробнее про Асинхронные вызовы.