[英]How do I trigger Airflow -dag using TriggerDagRunOperator
[英]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
每周执行一次,则可以在DAG1
或DAG2
中使用ShortCircuitOperator
并将DAG2
的schedule_interval
更新为None
(这意味着 DAG 只会被触发 - 要么手动或编程)。
选项 1:在DAG1
中,在执行TriggerDagRunOperator
之前添加一个ShortCircuitOperator
任务,该任务检查当前日期是否是所需的星期几。 如果是,则继续触发DAG2
。
选项 2:在DAG2
中,在执行一周中同一天检查的工作流的开头添加ShortCircuitOperator
。 同样,如果需要一周中的某一天,则继续使用 DAG 的 rest。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.