【发布时间】:2021-04-23 02:58:06
【问题描述】:
在过去的几天里,气流调度程序有点让我摸不着头脑,因为即使在 catchup=False 之后它也会回填 dag 运行。
我的时区感知 dag 的开始日期为 13-04-2021 19:30 PST 或 14-04-2021 2:30 UTC,并具有以下配置:
# define DAG and its parameters
dag = DAG(
'backup_dag',
default_args=default_args,
start_date=pendulum.datetime(2021, 4, 13, 19, 30, tz='US/Pacific'), # set start_date in US/Pacific (PST) timezone
description='A data backup pipeline',
schedule_interval="30 19 * * *", # 7:30 PM every day
catchup=False,
is_paused_upon_creation=False
)
此 dag 在边缘设备上运行,该边缘设备有时打开有时关闭。我希望这个 dag 基本上安排在19:30 PST 或2:30 UTC 运行,只要边缘设备打开,否则不要。奇怪的是,当我将带有 dag 的容器部署到边缘设备时,dag 会自动在预定时间间隔之外开始其第一次运行,即使该时间间隔已经过去!
我在这里缺少什么?我无法理解为什么调度程序会这样做
以下是我阅读所有文档后的理解,如果我错了,请纠正我。
调度程序在2021-04-19T011:30:00+00:00 UTC 获取DAG,根据dag 配置,理想情况下它应该在2021-04-20T02:30:00+00:00 UTC 运行。以下所有时间均为 UTC
Dag Start_date 1st run(skip catchup=false) 2nd run(skip catchup=false) 3rd run(skip catchup=false) 4th run(skip catchup=false)
2021-04-14T02:30:00+00:00 ---> 2021-04-15T02:30:00+00:00 ---> 2021-04-16T02:30:00+00:00 ---> 2021-04-17T02:30:00+00:00 ---> 2021-04-18T02:30:00+00:00 --->
5th run(skip catchup=false) 6th run(should execute)
2021-04-19T02:30:00+00:00 ---> 2021-04-20T02:30:00+00:00
那么,即使间隔已经过去,为什么间隔2021-04-18T02:30:00+00:00 到2021-04-19T02:30:00+00:00 仍会进行第 5 次运行?
我希望 DAG 仅在其间隔到来时运行。
【问题讨论】:
标签: python airflow etl airflow-scheduler