我试图调用Apache OpenWhisk操作(使用JavaScript SDK)作为远程功能。我想等待函数结果可在我的应用程序中使用。
通常通过使用阻塞调用来处理,例如
ow.actions.invoke({name, blocking: true, result: true, params})
...但是在这种情况下,该操作需要花费几分钟才能完成,这会导致HTTP连接超时。六十秒后,SDK会引发错误。
如何为耗时超过一分钟的调用检索操作结果?
答案 0 :(得分:0)
Apache OpenWhisk仅在默认时间限制为65秒的情况下才保留用于阻塞调用的打开连接。此限制由platform configuration管理(而不是基于每个用户)。
如果需要调用并采取行动并在等待结果时进行阻止(对于长时间运行的行动),则需要执行以下操作:
从非阻塞调用轮询激活结果时,应对允许的最大轮询时间施加限制。这是因为其他情况(例如无效的激活标识符)可能会返回HTTP 404。强制执行时间限制可确保在应用程序代码或平台出现问题时,轮询循环最终停止!
将最大轮询时间设置为操作超时限制(加上一个小的偏移量)是一个好方法。