Skip to content

Treasure ワークフローの並列タスク例

Treasure ワークフローでは、タスクを並列で実行できます。デフォルトでは、タスクは順次実行されます。Treasure ワークフローのタスクを並列で実行するには、parallelパラメータを_parallel: Trueとして指定する必要があります。また、並列で実行したいタスクをグループ化するために+group構文を使用することをお勧めします。

並列で実行するタスクはいくつでも定義できますが、TDは特定の時点で最大10個の個別の処理スレッドしか実行できません。タスクには4つの異なる状態のいずれかがあり、そのうちの1つだけがRunningです。10個のタスクだけが同時にRunning状態である限り、それらの各タスクは並列で実行されます。

このトピックの内容:

Workflowの_parallelオプションは、並列で実行するタスク数の入力をサポートしています。

_parallel : trueオプションでは、ユーザーが並列で実行するタスク数に制限を指定できないため、多くのサブタスクを持つタスクがすべて並列で実行され、タスクキューをブロックする可能性があります。

この機能強化により、ユーザーは並列タスクの実行を管理し、リソース利用をより適切に管理できるようになります。

並列タスク順序の例

以下の例では、2つのタスクをグループ化し、並列で実行しています。

+group:
  _parallel: True
  +step1:
    echo>: "hello!"
  +step2:
    py>: tasks.printMessage
    docker:
      image: "digdag/digdagpython:3.9"
  +step3:
    td_run>: my_other_saved_query

現在の_parallel : trueオプションでは、ユーザーが並列で実行するタスク数に制限を指定できないため、多くのサブタスクを持つタスクがすべて並列で実行され、タスクキューをブロックする可能性があります。

Workflowの_parallelオプションは、並列で実行するタスク数の入力をサポートしています。

+group:
  _parallel:
    limit: 2
  +step1:
    echo>: "hello!"
  +step2:
    py>: tasks.printMessage
    docker:
      image: "digdag/digdagpython:3.9"
  +step3:
    td_run>: my_other_saved_query

デフォルトタスク順序の例

例えば、デフォルトでは、以下のワークフローで、タスクstep1が最初に実行され、ステップにカスタムスクリプトが含まれているため、Pythonプログラムtasks.printMessageは別のDockerコンテナで実行されます。完了すると、step2の後続タスクが実行されます。

+step1:
 echo>: "hello!"
+step2:
  py>: tasks.printMessage
  docker:
    image: "digdag/digdagpython:3.9"
+step3:
  td_run>: my_other_saved_query

Treasure ワークフローはすべてのタスクが完了するまで実行されます。設定されたTTL(Time To Live)を超える長時間実行タスクはタイムアウトします。タスクがカスタムスクリプトを実行している場合でも同様です。タスクは定期的にポーリングされ、コンテナで実行されているスクリプトのステータスが確認され、td wf log <attemptid>コマンドを使用してTreasure コンソールとCLIでログメッセージを確認できます。