气流depends_on_past说明

Wei*_*Hao 8 python python-3.x airflow

根据官方的Airflow文档,需要处于成功状态的task instances直接上游task。另外,如果您设置了depends_on_past = True,则前一个任务实例需要成功(除非它是该任务的第一次运行)。

众所周知,任务是一种“实例化和参数化”的运算符。

现在,这让我感到困惑。例如:

DAG: {op_1} -> {op_2} -> {op_3}
Run Code Online (Sandbox Code Playgroud)

{op_2}是一个简单的PythonOperator,它从{op_1}获取1个参数并执行操作;

据我了解,op_2(param_1)和op_2(param_2)被视为2个不同的任务。

Given depends_on_past设置为True,则:

  1. 如果op_2(param_1)仍在运行;可以运行op_2(param_2)吗?
  2. 如果op_2(param_1)在上一次运行中失败;可以在当前运行中运行op_2(param_1)吗?

Meg*_*Ray 8

从官方文档中获取触发规则:

depends_on_past (布尔值)设置为True时,如果先前的任务计划未成功执行,则不会触发任务。

因此,除非您的DAG的先前运行失败,depends_on_past否则这不是一个因素,如果先前的运行成功执行了任务,它将完全不会影响当前的运行。

  • 这里需要注意的一点是,当depends_on_past为true的task_instance并且*scheduled dags*的上一个调度中的任务(schedule_interval不是None)不成功时,任务保持在None状态(未调度)。取决于过去不适用于触发的 DAG (2认同)
  • @theStud54,你确实说得很有道理...我重新检查了一个简单 DAG 的功能,它确实按预期工作。“@Abhilask Kishore”我在开发 1.9.0 时观察到了这一点,但为了确保在发表此评论之前,我使用 dependent_on_past 执行了 DAG,而我之前的观察是不正确的。 (2认同)