繁体   English   中英

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

[英]Airflow- Using TriggerDAGRunOperator to trigger DAG of different schedule

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

我有 DAG 1 每天运行,DAG 2 - 每周运行。 如何使用 TriggerDAGRunOperator 从 Daily one 触发每周 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

第 2 天:

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

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

我知道我可以使用 ExternalTaskSensor Operator 并提及 timedelta,但从长远来看它会变得混乱。

TriggerDAGRunOperator 是否有任何简单/干净的选项来每天检查 DAG 2 是否确实计划在当天运行,然后只触发它,否则在其他日子跳过它?

谢谢

DAG2是否总是由DAG1触发,您只希望DAG2每周运行一次,还是希望DAG2每周通过您列出DAG1触发的 cron 计划执行?

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

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

  • 选项 2:在DAG2中,在执行一周中同一天检查的工作流的开头添加ShortCircuitOperator 同样,如果需要一周中的某一天,则继续使用 DAG 的 rest。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM