cmarteepants commented on issue #55521:
URL: https://github.com/apache/airflow/issues/55521#issuecomment-3310082823
@KatalKavya96 are you still in a position to do the UI guide? In case you
need it, here's a copy of the dag that was used to simulate the dag runs. Let
me know if you need help or want me to take it over.
```
"""
## Use chain() and chain_linear() to set complex task dependencies
This DAG shows more complex use of `chain()` and `chain_linear()` to set
task dependencies.
chain_linear() was added in Airflow 2.7.
"""
from airflow.sdk import dag, task, chain_linear, chain
import random
@dag(
tags=["chain()", "chain_linear()", "dependency_functions", "toy",
"core"],
)
def toy_chain_linear_vs_chain_complex():
@task
def start_chain_linear():
print(f"Start Chain Linear: {random.randint(1, 100)}")
@task
def end_chain_linear():
print(f"End Chain Linear: {random.randint(1, 100)}")
@task
def start_chain():
print(f"Start Chain: {random.randint(1, 100)}")
@task
def end_chain():
print(f"End Chain: {random.randint(1, 100)}")
@task
def empty_1():
if random.randint(1, 100) % 2 == 0:
raise Exception("Random failure")
print(f"Empty 1: {random.randint(1, 100)}")
@task
def empty_2():
print(f"Empty 2: {random.randint(1, 100)}")
@task
def task_with_random_number(task_name):
print(f"{task_name}: {random.randint(1, 100)}")
t0 = task_with_random_number.override(task_id="chain_linear_t0")("Chain
Linear T0")
t1 = task_with_random_number.override(task_id="chain_linear_t1")("Chain
Linear T1")
t2 = task_with_random_number.override(task_id="chain_linear_t2")("Chain
Linear T2")
t3 = task_with_random_number.override(task_id="chain_linear_t3")("Chain
Linear T3")
t4 = task_with_random_number.override(task_id="chain_linear_t4")("Chain
Linear T4")
t5 = task_with_random_number.override(task_id="chain_linear_t5")("Chain
Linear T5")
t6 = task_with_random_number.override(task_id="chain_linear_t6")("Chain
Linear T6")
t7 = task_with_random_number.override(task_id="chain_linear_t7")("Chain
Linear T7")
t8 = task_with_random_number.override(task_id="chain_linear_t8")("Chain
Linear T8")
t9 = task_with_random_number.override(task_id="chain_linear_t9")("Chain
Linear T9")
t10 = task_with_random_number.override(task_id="chain_t10")("Chain T10")
t11 = task_with_random_number.override(task_id="chain_t11")("Chain T11")
t12 = task_with_random_number.override(task_id="chain_t12")("Chain T12")
t13 = task_with_random_number.override(task_id="chain_t13")("Chain T13")
t14 = task_with_random_number.override(task_id="chain_t14")("Chain T14")
t15 = task_with_random_number.override(task_id="chain_t15")("Chain T15")
t16 = task_with_random_number.override(task_id="chain_t16")("Chain T16")
t17 = task_with_random_number.override(task_id="chain_t17")("Chain T17")
t18 = task_with_random_number.override(task_id="chain_t18")("Chain T18")
t19 = task_with_random_number.override(task_id="chain_t19")("Chain T19")
chain_linear(
start_chain_linear(),
[t0, t1],
[t2, t3, t4],
[t5, t6, t7],
[t8, t9],
end_chain_linear(),
)
# chain cannot set dependencies between lists of different lengths!
chain(
start_chain(),
[t10, t11],
empty_1(),
[t12, t13, t14],
[t15, t16, t17],
empty_2(),
[t18, t19],
end_chain(),
)
end_chain_linear() >> start_chain()
toy_chain_linear_vs_chain_complex()
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]