2017-03-17 9 views
1

私は2つのアクションを持っています(それぞれ、データを収集するためにサービスに対して別々のREST呼び出しを行います)、メタアクションを作成して2つのアクションをトリガーし、結果を集約したいと思います。OpenWhiskでどのように並列アクションを実行できますか?

私はOpenWhiskを使い始めています。私は、アクションを実装するために私が使用している特定の言語でこれをどうやって行うのかよく知っていますが、これを行うための適切なOpenWhiskの方法は何か不思議です。

は、二つの動作(=真のブロッキング)を発射する、新しいアクションを作成し、結果をマージ:あなたは結果を集計したい場合は

答えて

4

は、あなたによって説明したものよりも、現在は他の方法はありません。 LYアクションblockingを起動

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を使用していない対応答でその結果が利用できるようになります:あなたはそこにアクションの配列を呼び出すことができるよう

NPMのopenwhiskモジュールは、それが超簡単になりますここでは、非同期形式で結果を取得するためのアクティベーションIDのみを取得します。

+0

ああ。それはまさに私が探していたものです。アクションは基本的に並行して実行されますか?タイムアウトはどのように処理されますか? – RedBullet

+0

はい、それらは並行して実行されます。ブロッキング呼び出しは、計算結果を最大60秒間返します。その後、それはnon-blockingアクティベーションに戻り、上記のようにアクティベーションIDを渡します。したがって、上記のコードを意味のあるものにするには、アクションを60秒以内に渡す必要があります。そうしないと、「do something」ブロックの結果をポーリングする必要があります。 – markusthoemmes

関連する問題