処理を並列に実行し、結果を取得したい

こんにちは。

下図のような処理をDataSpiderでやりたいと思っています。

(拙い絵でゴメンナサイ)

・処理A、B、Cは並列で実行する。

・いずれかが失敗する可能性があるが、問題ないものは最後まで実行したい。

 (図の場合、Cが失敗していますが、AとBは最後までやりたい)

・ログに結果を出したい。

 

・・・と、なったときに、まずスレッド処理を触ってみたのですが

いずれかが失敗した場合、その時点で全ての処理が中断されてしまうようでした。

 

A→B→Cと順番に実行して、それぞれ try-catchで挟んでいくのは

なるべく避けたいと思っています。

 

何か良い方法があればご教示いただきたいです。

よろしくお願いします。

この記事は役に立ちましたか?

0が役に立ったといっています

コメント

  • Avatar
    おかべ
    コメントアクション Permalink

    星の子ポロンさん、
    正しい解ではないと思うのですが、
    ・処理A、B、Cを個別のスクリプトにして、親スクリプトを新たに作成し「スクリプト呼び出し」をスレッドで処理させる。
    ・ログは分割した処理の中でDBに書くか、「ログ出力」を使ってアプリケーションログとして出力するか。
    というのはどうでしょう?

    でも分割した処理の中はtry-catchを使うだろうから・・・

    0
  • Avatar
    httky
    コメントアクション Permalink

    スレッド処理の各 A B C それぞれに try-catch を配置しておけば、

    あるスレッドでエラーが発生しても、他のスレッドは中断されないです。

     

    「それぞれ try-catchで挟む」とは反しますが、

    「A→B→Cと順番に実行」と「他スレッドのエラーによる中断」は避けられると思います。

     

    前の方がコメントされているように、別スクリプトにした方がスッキリしそうですね。

    0
  • Avatar
    星の子ポロン
    コメントアクション Permalink

    おかべさん、httkyさん

    ありがとうございます。お返事が遅くなってしまいすみません。

     

    たしかに、各処理を別スクリプト化しちゃったほうがスッキリしそうですねー。

    この方法で試してみます。ご回答ありがとうございました!

    0

ログインしてコメントを残してください。