2017-03-17 52 views
1

我有两个动作(每个都会对服务执行不同的REST调用来收集一些数据),并且我想创建一个meta-Action,它实质上会触发这两个动作并聚合结果。如何在OpenWhisk中执行并行操作?

我刚刚开始使用OpenWhisk,并且我非常了解如何在给定语言中执行此操作来执行操作,但我很好奇OpenWhisk的合适方法是什么?

回答

4

如果要汇总的结果,有比你所描述的目前没有其他办法:

创建一个新的动作,射击这两个动作(阻塞= 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以异步方式获得结果。

+0

很酷。这正是我所期待的。行动是否基本平行?如何处理超时? – RedBullet

+0

是的,它们并行运行。阻塞调用将返回最多60秒的计算结果。之后,它将回退到非阻塞激活状态,如上所述向您提供激活ID。因此,为了使上述代码有意义,您的操作需要在<60秒内传递,否则您需要在“执行某些操作”块中轮询结果。 – markusthoemmes