【发布时间】:2026-01-28 11:00:02
【问题描述】:
我设置了以下 DAG:
default_dag_args = {
'start_date': datetime.datetime(2021, 6, 25, 0, 0),
'email': 'foobar@foobar.com',
'email_on_failure': True,
'email_on_retry': False,
'retries': 1,
'retry_delay': datetime.timedelta(minutes=30)
}
with models.DAG(
'foobar',
schedule_interval = "30 5,7,9 * * *",
default_args=default_dag_args,
catchup=False) as dag:
我想要的行为是 DAG 将在每天 5:30、7:30 和 9:30 UTC 执行。我看到的行为是 5:30 运行在 7:30 UTC 执行,7:30 运行在 9:30 执行,9:30 运行在第二天 5:30 执行。
我想我根据文档对为什么会发生这种情况有一个模糊的概念 - 9:30 标志着计划周期的结束,因此 9:30 的运行在下一个周期的开始执行。我不知道如何获得我想要的行为。 DAG 在代码中没有任何对调度时间的引用,它只需要在 5:30、7:30 和 9:30 运行,而 Airflow 认为它无关紧要的“运行时间”。
有没有办法让 DAG 在绝对时间运行?如果没有,我可以设置什么时间表来获得我想要的行为?
【问题讨论】: