Apache Airflow 中的开始日期和预定日期有问题

Problem with start date and scheduled date in Apache Airflow

我正在 Apache Airflow 工作,我对预定日期和开始日期有疑问。

我想要每天 8:00 AM UTC 的 DAG 到 运行。所以,我做了:

default_args = {
        'owner': 'airflow',
        'depends_on_past': False,
        'start_date': datetime(2020, 12, 7, 10, 0,0),
        'email': ['example@emaiil.com'],
        'email_on_failure': True,
        'email_on_retry': False,
        'retries': 1,
        'retry_delay': timedelta(hours=5)
    }
# Never run
dag = DAG(dag_id='id', default_args=default_args, schedule_interval='0 8 * * *',catchup=True)

我上传 DAG 的那天是 2020 年 12 月 7 日,我想 运行 在 2020 年 12 月 8 日 08:00:00 上传。

我将 start_date 设置为 2020-12-07 的 10:00:00 以避免 运行 在 2020-12-07 的 08:00:00 将其设置为 运行 并且第二天才触发,没用

然后我修改了起始日期:

default_args = {
        'owner': 'airflow',
        'depends_on_past': False,
        'start_date': datetime(2020, 12, 7, 7, 59,0),
        'email': ['example@emaiil.com'],
        'email_on_failure': True,
        'email_on_retry': False,
        'retries': 1,
        'retry_delay': timedelta(hours=5)
    }
# Never run
dag = DAG(dag_id='etl-ca-cpke-spark_dev_databricks', default_args=default_args, schedule_interval='0 8 * * *',catchup=True)

现在开始日期比 DAG 应该 运行 早 1 分钟,事实上,因为追赶设置为 True,DAG 已在 2020-12-07 08:00:00,但在 2020-12-08 08:00:00.

没有被触发

为什么?

Airflow 在间隔 (See documentation reference)

end 安排任务

意思是当你这样做时:

start_date: datetime(2020, 12, 7, 8, 0,0)
schedule_interval: '0 8 * * *'

第一个 运行 将在 08:00+- 2020-12-08 开始(取决于资源)

这个 运行 的 execution_date 将是:2020-12-07 08:00

下一个 运行 将在 2020-12-09 08:00

开始

这个 运行 的 execution_date2020-12-08 08:00

由于今天是 2020-12-08,下一个 运行 没有开始,因为它还不是间隔的 结束