【问题标题】:How can one do parallel actions in OpenWhisk?如何在 OpenWhisk 中执行并行操作?
【发布时间】:2017-08-09 03:30:49
【问题描述】:

我有两个动作(每个动作都会对服务进行不同的 REST 调用以收集一些数据),我想创建一个元动作,它本质上会触发这两个动作并聚合结果。

我刚刚开始使用 OpenWhisk,而且我非常清楚如何使用我用来实现操作的给定语言来执行此操作,但我很好奇 OpenWhisk 执行此操作的适当方式可能是什么?

【问题讨论】:

    标签: openwhisk


    【解决方案1】:

    如果你想汇总结果,目前除了你描述的没有其他方法:

    创建一个新动作,触发两个动作 (blocking=true) 并合并结果。

    npm 上的 openwhisk 模块使这变得格外简单,因为您可以在那里调用一系列操作:

    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 */ });
    }
    

    调用动作blockingly,使其结果在响应中可用,而不是使用blocking,在这种情况下,您只会获得一个激活ID,以异步方式获取结果。

    【讨论】:

    • 太酷了。这正是我一直在寻找的。这些动作基本上是并行运行的吗?超时如何处理?
    • 是的,它们是并行运行的。阻塞调用将返回最多 60 秒的计算结果。之后,它将回退到非阻塞激活,如上所述将激活 id 交给您。因此,要使上述代码有意义,您的操作需要在
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-22
    • 2010-10-03
    相关资源
    最近更新 更多