1
我有两个动作(每个都会对服务执行不同的REST调用来收集一些数据),并且我想创建一个meta-Action,它实质上会触发这两个动作并聚合结果。如何在OpenWhisk中执行并行操作?
我刚刚开始使用OpenWhisk,并且我非常了解如何在给定语言中执行此操作来执行操作,但我很好奇OpenWhisk的合适方法是什么?
我有两个动作(每个都会对服务执行不同的REST调用来收集一些数据),并且我想创建一个meta-Action,它实质上会触发这两个动作并聚合结果。如何在OpenWhisk中执行并行操作?
我刚刚开始使用OpenWhisk,并且我非常了解如何在给定语言中执行此操作来执行操作,但我很好奇OpenWhisk的合适方法是什么?
如果要汇总的结果,有比你所描述的目前没有其他办法:
创建一个新的动作,射击这两个动作(阻塞= TRUE)和合并的结果。
的openwhisk
模块NPM使得额外的,简单的,你可以调用的动作的阵中还有:
var openwhisk = require("openwhisk")
function main(params) {
var ow = openwhisk()
return ow.actions.invoke([
{name: "action1", blocking: true},
{name: "action2", blocking: true}
]).then(([result1, result2]) => { /* do something */ });
}
调用行动blocking
LY,使得与不使用blocking
响应提供其结果你只能得到一个激活ID以异步方式获得结果。
很酷。这正是我所期待的。行动是否基本平行?如何处理超时? – RedBullet
是的,它们并行运行。阻塞调用将返回最多60秒的计算结果。之后,它将回退到非阻塞激活状态,如上所述向您提供激活ID。因此,为了使上述代码有意义,您的操作需要在<60秒内传递,否则您需要在“执行某些操作”块中轮询结果。 – markusthoemmes