60秒后阻止动作调用超时-如何访问结果?

时间:2019-05-15 08:17:59

标签: node.js openwhisk ibm-cloud-functions

我试图调用Apache OpenWhisk操作(使用JavaScript SDK)作为远程功能。我想等待函数结果可在我的应用程序中使用。

通常通过使用阻塞调用来处理,例如

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

...但是在这种情况下,该操作需要花费几分钟才能完成,这会导致HTTP连接超时。六十秒后,SDK会引发错误。

如何为耗时超过一分钟的调用检索操作结果?

1 个答案:

答案 0 :(得分:0)

Apache OpenWhisk仅在默认时间限制为65秒的情况下才保留用于阻塞调用的打开连接。此限制由platform configuration管理(而不是基于每个用户)。

如果需要调用并采取行动并在等待结果时进行阻止(对于长时间运行的行动),则需要执行以下操作:

  • 使用非阻塞调用来调用操作。
  • 使用返回的激活标识符来轮询激活结果API。
  • 激活结果的HTTP响应将返回HTTP 404响应,直到操作完成。

从非阻塞调用轮询激活结果时,应对允许的最大轮询时间施加限制。这是因为其他情况(例如无效的激活标识符)可能会返回HTTP 404。强制执行时间限制可确保在应用程序代码或平台出现问题时,轮询循环最终停止!

将最大轮询时间设置为操作超时限制(加上一个小的偏移量)是一个好方法。