任务失败后,气流停止调度dagruns

问题描述 投票:0回答:1

如果dagrun失败,我会感到困惑。我想要实现的行为是:

  1. DAG的常规触发器(每小时)
  2. 重试任务
  3. 如果任务未能重试,请发送有关失败的电子邮件
  4. 当下一个每小时触发器响起时,触发一个新的dagrun,好像什么都没有失败一样。

这些是我的dag参数和任务参数:

任务默认值:

'depends_on_past': True,
'start_date': airflow.utils.dates.days_ago(2),
'email': ['[email protected]'],
'email_on_failure': True,
'email_on_retry': False,
'retries': 1,
'retry_delay': timedelta(minutes=5),
'wait_for_downstream': False,

日参数:

schedule_interval=timedelta(minutes=60),
catchup=False,
max_active_runs=1

我认为我误解了其中的一些论点,因为在我看来,如果一个任务失败n次(即dagrun失败),那么下一个dagrun会被安排,但只是永远处于运行状态,没有进一步的dagruns成功(或甚至得到预定)。例如,这里是dagruns(我不知道在哪里可以找到像this question这样的基于文本的调度程序日志),其中dag计划每5分钟而不是每小时运行一次:

enter image description here

执行每5分钟运行一次,直到失败,之后最后一次执行才处于运行状态,并且在过去的30分钟内一直如此。

我做错了什么?

我应该补充一点,重新启动调度程序没有帮助,也没有手动将该运行任务设置为失败...

python scheduled-tasks scheduler airflow
1个回答
2
投票

您将depends_on_past设置为True,这会阻止下一个DagRun启动。

From the docs:depends_on_past(bool) - 当设置为true时,任务实例将依次运行,同时依赖上一个任务的计划成功。允许start_date的任务实例运行。

这意味着您的Dag正在尝试运行,但它正在等待前一个DagRun中的相应任务具有成功状态。

© www.soinside.com 2019 - 2024. All rights reserved.