【发布时间】:2022-11-14 07:58:17
【问题描述】:
在我的实际 DAG 中,我需要首先获取一个 ID 列表,然后为每个 ID 运行一组任务。
我已经使用动态任务映射将列表传递给单个任务或操作员以使其处理列表,但我们也可以使用任务组来执行此操作吗?
如果我能弄清楚如何在 TaskGroup 级别传递一个变量值,以便它在所有子任务中使用该值,那么我应该能够满足我的要求。
下面应该让你知道我在找什么,只需要帮助让它工作。
from airflow import DAG, XComArg
from datetime import datetime
from airflow.decorators import task
from airflow.utils.task_group import TaskGroup
from airflow.operators.python import PythonOperator
with DAG(
'dtm_tg_test',
schedule_interval = None,
start_date = datetime(2022, 1, 1)
) as dag:
def getList():
return [ "Hello", "World" ]
def printText(text):
print(text)
get_list = PythonOperator(
task_id = "get_list",
python_callable = getList,
dag = dag
)
with TaskGroup.partial(
group_id = "task_group"
).expand(
list = XComArg(get_list)
) as task_group:
print_text = PythonOperator(
task_id = "print_output",
python_callable = printText,
op_kwargs = { "text": list }
dag = dag
)
print_again = PythonOperator(
task_id = "print_output",
python_callable = printText,
op_kwargs = { "text": list }
dag = dag
)
print_text >> print_again
get_list >> task_group
【问题讨论】:
标签: airflow dynamic-programming