Airflow 如果以前的任何实例正在运行或失败,则跳过触发气流DAG

Airflow 如果以前的任何实例正在运行或失败,则跳过触发气流DAG,airflow,Airflow,我有一个每小时运行的气流DAG,比如说,7:10,8:10,9:10,10:10。。等 如果DAG运行的任何实例需要超过一个小时才能完成,我只需要在完成时间之后触发下一个计划运行 例如:如果7:10运行在8:15完成,则下一次运行应为9:10运行,并且在7:10运行完成时不应触发8:10运行 如果7:10运行在9:30完成,则下一次运行应为10:10运行,并且在7:10运行完成时不应触发8:10,9:10运行 此外,如果任何运行失败,将有人干预、清理并标记DAG成功。 在此之前,不应触发后续运行

我有一个每小时运行的气流DAG,比如说,7:10,8:10,9:10,10:10。。等 如果DAG运行的任何实例需要超过一个小时才能完成,我只需要在完成时间之后触发下一个计划运行

例如:如果7:10运行在8:15完成,则下一次运行应为9:10运行,并且在7:10运行完成时不应触发8:10运行

如果7:10运行在9:30完成,则下一次运行应为10:10运行,并且在7:10运行完成时不应触发8:10,9:10运行

此外,如果任何运行失败,将有人干预、清理并标记DAG成功。 在此之前,不应触发后续运行,在手动将失败的运行标记为成功后,应在计划时间触发下一次计划运行

例如:如果7:10运行在7:30失败,并在8:45手动标记为成功,则下一次运行应在9:10进行

如何在气流中实现这一点


谢谢

将调度程序设置为当前dag的
None
,创建另一个dag,首先检查dag的状态(是否已完成),然后触发相同的dag(在PythonOperator中应用逻辑)。根据您的需要安排相同的任务,以监控需要每小时执行的任务。与@neilharia7达成一致,您可以通过单个DAG实现此行为:让第一个任务成为
PythonOperator
或自定义操作符(可能与
ShortCircuitOperator
类似)然后使用它来检查上次运行的状态,如果决定跳过当前运行,请使用
AirflowskipeException
感谢@y2k shubham-在当前运行期间检查上一次运行对我有效。将当前dag的计划程序设置为
None
,创建另一个dag,首先检查dag的状态(无论是否完成)然后触发相同的dag(在PythonOperator中应用您的逻辑)。根据您的需要安排相同的dag,以监控需要每小时执行的dag。与@neilharia7达成一致,您可以通过单个dag实现此行为:让第一个任务是
PythonOperator
或自定义运算符(可能是沿着
短路操作符
)的路线,然后使用它检查最后一次
DagRun
的状态,以决定使用
AirflowskipeException
跳过当前运行,感谢@y2k shubham-在当前运行期间检查上一次运行对我有效。