Тайм-ауты вызова действия блокировки после 60 с. Как получить доступ к результату? - PullRequest
1 голос
/ 15 мая 2019

Я пытаюсь вызвать действие Apache OpenWhisk (используя JavaScript SDK) в качестве удаленной функции.Я хочу дождаться, пока результат функции станет доступным для использования в моем приложении.

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

ow.actions.invoke({name, blocking: true, result: true, params})

... но в этом случаедействие выполняется несколько минут, что приводит к таймауту в HTTP-соединении.SDK выдает ошибку через шестьдесят секунд.

Как получить результат действия для вызова, который занимает более минуты?

1 Ответ

0 голосов
/ 15 мая 2019

Apache OpenWhisk будет хранить открытые соединения только для вызова блокировки в течение установленного по умолчанию временного ограничения в 65 секунд.Этим пределом управляет конфигурация платформы (а не для каждого пользователя).

Если вам нужно вызвать и выполнить действие и заблокировать ожидание результата (в течение длительного времени).выполняется действие), вам необходимо сделать следующее:

  • Вызвать действие, используя неблокирующий вызов.
  • Использовать возвращенный идентификатор активацииопросить API результатов активации.
  • Ответ HTTP для результата активации будет возвращать ответ HTTP 404 до завершения действия.

КогдаОпрашивая результаты активации из неблокирующих вызовов, вы должны установить ограничение на максимально допустимое время опроса.Это потому, что HTTP 404 может быть возвращен из-за других сценариев (например, неверные идентификаторы активации).Применение ограничения по времени гарантирует, что в случае проблем в коде приложения или на платформе цикл опроса с последующей остановкой!

Установка максимального времени опроса для предела времени ожидания действия (плюс небольшое смещение)хороший подход.

...