Recursive Dag This example shows how you can (carefully!) recurse on a DAG template. HeraYAML 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19from hera.workflows import DAG, Task, Workflow, script @script() def random_roll(): import random print(random.randint(1, 6)) with Workflow(generate_name="recursive-dag-", entrypoint="dag") as w: with DAG(name="dag") as dag: random_number = random_roll(name="roll") recurse = Task( name="recurse-if-not-six", template=dag, when=f"{random_number.result} != 6", ) random_number >> recurse 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27apiVersion: argoproj.io/v1alpha1 kind: Workflow metadata: generateName: recursive-dag- spec: entrypoint: dag templates: - name: dag dag: tasks: - name: roll template: random-roll - name: recurse-if-not-six depends: roll template: dag when: '{{tasks.roll.outputs.result}} != 6' - name: random-roll script: image: python:3.10 source: |- import os import sys sys.path.append(os.getcwd()) import random print(random.randint(1, 6)) command: - python Comments