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