Airflow-使用TriggerDAGRunOperator触发不同调度的DAG

Airflow- Using TriggerDAGRunOperator to trigger DAG of different schedule

我是 Airflow 的新手。我需要为具有不同时间表的 DAG 依赖项提出一个干净简单的解决方案。

我有 DAG 1 运行ning Daily 和 DAG 2 - Weekly。 如何使用 TriggerDAGRunOperator 从 Daily one 触发每周 DAG?

DAG 1:

with DAG('DAG 1',
     schedule_interval='0 10 * * *'
     ) as dag:

TASK1 = BashOperator(task_id='TASK1',
                bash_command='sample')
TRG_TASK=TriggerDAGRunOperator(task_id='TRG_TASK',trigger_dag_id='DAG 2')

TASK1 >> TRG_TASK

DAG 2:

with DAG('DAG 2',
     schedule_interval='15 10 * * 5'
     ) as dag:

TASK1 = BashOperator(task_id='TASK1',
                bash_command='sample')

我知道我可以使用 ExternalTask​​Sensor Operator 并提及 timedelta,但它会变得很长 运行。

TriggerDAGRunOperator 是否有任何 easy/clean 选项来每天检查 DAG 2 是否确实安排在 运行 那一天,然后只触发它,否则在其他日子跳过它?

谢谢

DAG2 是否总是会被 DAG1 触发,而您只希望每周 DAG2 到 运行,或者您希望 DAG2 将被执行每周通过你列出的 cron 时间表 DAG1?

触发

如果期望 DAG2 仅由 DAG1 触发,但您只想 DAG2 每周执行一次,则可以在 [=11] 中使用 ShortCircuitOperator =] 或 DAG2 并将 DAG2schedule_interval 更新为 None (这意味着 DAG 只会被触发——手动或编程)。

  • 选项 1:在 DAG1 中,在执行 TriggerDagRunOperator 之前添加一个 ShortCircuitOperator 任务,该任务会检查当前日期是否是所需日期星期。如果是,则继续触发 DAG2.

  • 选项 2:在 DAG2 中,在执行星期几检查的工作流程的开头添加 ShortCircuitOperator。同样,如果所需的星期几,则继续 DAG 的其余部分。