动态生成任务时,我需要让任务2依赖于任务1,任务1 >>任务2或task2.set_upstream(task1)。
由于task_ids是经过评估的,或者似乎是预先确定的,因此我无法提前设置依赖项,因此不胜感激。
Component(I)任务可以很好地运行,只是它们一次运行即可。
for i in range(1,10):
task_id='Component'+str(i)
task_id = BashOperator(
task_id='Component'+str(i),
bash_command="echo {{ ti.xcom_pull task_ids='SomeOtherTaskXcom', key='return_value') }} -z " + str(i) ,
xcom_push=True,
dag=dag)
?????.set_upstream(??????)
答案 0 :(得分:2)
使用以下代码:
a = []
for i in range(0,10):
a.append(BashOperator(
task_id='Component'+str(i),
bash_command="echo {{ ti.xcom_pull task_ids='SomeOtherTaskXcom', key='return_value') }} -z " + str(i) ,
xcom_push=True,
dag=dag))
if i not in [0]:
a[i-1] >> a[i]
使用DummyOperator
,代码如下:
a = []
for i in range(0,10):
a.append(DummyOperator(
task_id='Component'+str(i),
dag=dag))
if i not in [0]:
a[i-1] >> a[i]
这将生成以下DAG:
答案 1 :(得分:0)
您可以遵循以下模式:
plugins: [
new webpack.ProvidePlugin({
$: 'jquery',
jQuery: 'jquery',
"uuidv4": "uuid/v4"
})
]
这将在d1下游生成5个任务。
答案 2 :(得分:0)
使用chain
from airflow.utils.helpers import chain
ops = []
for i in range(0,10):
ops.append(DummyOperator(
task_id=f"Component_{i}",
dag=dag))
chain(ops)