为什么 dag 在 Airflow 中运行 dagrun 时多运行一次?

Why dag runs more once when dagruns in Airflow?

这是我的代码:

default_args = {
    'owner': 'airflow',
    'depends_on_past': True,
    'start_date': datetime(2018,9,9),
    'email': ['airflow@example.com'],
    'email_on_failure': False,
    'email_on_retry': False,
    'retries': 1,
    'retry_delay': timedelta(minutes=5)
}

dag = DAG('hello', catchup=False, default_args=default_args, schedule_interval=timedelta(minutes=1))

而任务实例列表是这样的:

您可以看到我从 08:36:24 开始,我知道它将在 08:35:20 执行任务,因为我将 schedule_interval 设置为 1 分钟。但是为什么它在08:34:20执行了任务?

最右边一列显示的是实际执行相应任务的时间,但并没有告诉我们您实际启用DAG的时间。我怀疑您在 08:35 时启用了 DAG,调度程序选择了 DAG 并为 8:34 安排了第一个 DAG 运行。当调度程序完成所有设置工作并执行第一个 DAG 运行 时,它已经 8:36.

一分钟的间隔太短了(或者你太慢了;))。尝试 10 分钟的间隔并在 DAG 处于 8:33 时启用它(因此不在调度间隔边界,例如 8:30 或 8:40),您将看到一切如您所愿。