Airflow DAG 在指定时间不 运行 catchup=False

Airflow DAG does not run at specified time with catchup=False

我有一个气流 DAG,对其进行回填并没有多大意义。我发现在 airflow 1.8 中,你可以给 DAG 参数 catchup=False,所以它只会启动最近的作业。 也就是说,我想让 DAG 在午夜和每天 运行 开始。 但。现在就是这样:DAG 立即开始,而不是在午夜。此外,当我清除所有 DAG 运行s 时,它会立即再次开始。然后,DAG 将 运行 每天,但会安排在错误的开始时间 + 1 天。

如何才能让 DAG 只启动 运行 最近的作业, 在特定时间(午夜)启动?

这是我使用的代码:

from datetime import datetime, timedelta
from airflow import DAG
from airflow.operators.dummy_operator import DummyOperator

default_args = {'depends_on_past': False,
                'start_date': datetime(2013, 1, 1)}

with DAG('test_dag',
         default_args=default_args,
         schedule_interval=timedelta(days=1),
         catchup=False
         ) as dag:
    test = DummyOperator(task_id='test')

你可以把crontab放在schedule_interval里,更多细节可以在这里找到:https://airflow.apache.org/scheduler.html#dag-runs,例如schedule_interval="0 0 * * *"

此外,Airflow 在 UTC 下 运行,请将您的 "midnight" 调整为正确的时区。