Airflow 气流DAG由调度程序触发两次。每周DAG

Airflow 气流DAG由调度程序触发两次。每周DAG,airflow,scheduler,Airflow,Scheduler,对于以下配置,气流DAG在周一触发两次 当我使用3011**1cron表达式时,DAG根本不会触发。所以我想我必须在表达式中再加一个。 3011**1*-它可以工作 default_args: 'start_date': airflow.utils.dates.days_ago(1) 达格: 计划时间间隔=30 11**1*,##这是周一11:30的每周运行时间 然而,DAG每周一被触发2次。间隔1分钟: 11:30:05 11:30:58 可能的原因是什么?6位cron表达式不正确,您输

对于以下配置,气流DAG在周一触发两次

当我使用
3011**1
cron表达式时,DAG根本不会触发。所以我想我必须在表达式中再加一个。
3011**1*
-它可以工作

default_args:
'start_date': airflow.utils.dates.days_ago(1)
达格: 计划时间间隔=
30 11**1*
,##这是周一11:30的每周运行时间

然而,DAG每周一被触发2次。间隔1分钟:

  • 11:30:05
  • 11:30:58

可能的原因是什么?

6位cron表达式不正确,您输入的第一个是正确的。你跑了多少次DAG?
我建议你试着先运行
schedule\u interval=@weekly
,看看会发生什么

airflow使用的cron解析器将第6位解释为秒(如您在此处所见:)

我假设你的DAG在一分钟内完成。在下一个调度程序循环中,它看到cron调度仍然匹配(在第58秒),因此它再次启动DAG

我也有同样的问题,因为气流文档链接到一个维基百科关于cron的条目,其中显示了6个条目。6个条目是非标准的,并且有多个实现。无论如何,对于气流,第6个条目被解释为秒


您的5位cron表达式应该可以工作。也许再试一次?但是,请更改dag id,否则您可能会遇到奇怪的行为:From:
更改计划间隔始终需要更改dag_id,因为以前运行的TaskInstances不会与新的计划间隔对齐,所以最后,我解决了问题

是的,它是正确的,5位cron表达式是正确的。 我正在使用
schedule\u interval=30 11**1(每周一11:30 UTC)

它不起作用,因为我有开始的时间:

'start_date': airflow.utils.dates.days_ago(1)
我在Airflow上找到了这个博客-通过CRON表达式找到确切的[开始日期]

如果是每周工作,你的开始日期应该是一周前。 所以我把它改成了“开始日期”:aiffort.utils.dates.days\u ago(7)

现在它运行良好


谢谢你

首先,我用5位数的表达式安排,从未触发。然后我看了一下Airflow文档,在那个里我看到了,总共6位数字,还有年份。所以我把它改成了6位数,它触发了DAG。问题是它会触发两次。我不知道它为什么会这样。原因可能是什么?