我已经使用以下参数设置了一个 dag
local_tz = pendulum.timezone('US/Eastern')
default_args = {
'retries': 3,
'retry_delay': timedelta(minutes=5)
}
dag = DAG(
dag_id='some_dag',
start_date=datetime(2021, 1, 8, tzinfo=local_tz),
schedule_interval='0 16 8 * *',
default_args=default_args,
catchup=True
)
我预计最近的任务将在 5 月 8 日运行,但是,我只看到 2 月 8 日、3 月 8 日和 4 月 8 日。我似乎无法弄清楚 Airflow 为何在 4 月份停止。
现在是 5 月 25 日,所以 5 月 8 日的跑步不应该与其他月份一起回填吗?需要明确的是,我今天刚刚部署了这个 dag,所以所有执行的 dag 运行,包括丢失的 5 月 8 日都是回填。
答案 0 :(得分:1)
这是预料之中的。 正如您在间隔结束时提到的 Airflow 计划任务。 根据您的设置,日程安排将如下所示:
1st
运行将于 2021-02-08
开始,此运行 execution_date
将是 2021-01-08
2nd
运行将于 2021-03-08
开始,此运行 execution_date
将是 2021-02-08
3th
运行将于 2021-04-08
开始,此运行 execution_date
将是 2021-03-08
4th
运行将于 2021-05-08
开始,此运行 execution_date
将是 2021-04-08
5th
运行将于 2021-06-08
开始,此运行 execution_date
将是 2021-05-08
由于您实际上将 DAG 设置为在 2021-05-26
时刻执行的气流开始 1st-4th
运行,因为这些运行的间隔已经结束。 5th
运行尚未开始,因为间隔尚未结束,它将在 2021-06-08
结束。
您可以在此answer中阅读更多有关 Airflow 为何如此行为的详细解释。