理解Airflow DAG的start_date及dagrun顶部显示日期的含义
Airflow DAG运行页顶部日期的含义
你看到的这一系列时间戳,是每个DAG运行实例(DagRun)的逻辑日期(Logical Date,Airflow 2.2前版本叫执行日期/Execution Date),是Airflow调度逻辑里的核心标识,具体规则和你看到连续历史日期的原因如下:
- 这个日期标记的是当前DagRun对应处理的数据周期边界,不是任务实际启动运行的物理时间。Airflow本身是为周期数据处理设计的,每一次DAG运行都对应一个明确的数据时间窗口,逻辑日期就是这个窗口的标记位。
- 你当前操作时间是2022-07-15,却能看到从2022年7月12日20:00开始的连续日期,是Airflow默认的回填(Backfill)机制生效了:当你开启一个DAG时,如果DAG配置的
start_date早于当前时间,Airflow会按照你设置的调度间隔,从start_date之后第一个符合调度规则的时间点开始,逐一生成对应周期的DagRun,直到追上当前最新的调度时间点。
拿你的simple_dag举个例子:
如果你在代码里给DAG配的调度规则是schedule_interval='0 20 * * *'(每天20点触发)、start_date=datetime(2022,7,12),Airflow就会自动生成逻辑日期为2022-07-12 20:00、2022-07-13 20:00、2022-07-14 20:00的三个历史运行实例,和你界面上看到的日期序列完全匹配。
两个容易踩坑的点:
- 别把逻辑日期和实际运行时间搞混:比如逻辑日期标着2022-07-12 20:00的实例,实际跑的时间是你开DAG的7月15日前后,它只是负责处理7月12日20点对应周期的数据而已。
- 要是不想让Airflow自动补跑历史任务,直接在DAG参数里加
catchup=False就行,之后开DAG只会跑当前最新的调度周期,不会生成这些历史回填实例。


内容的提问来源于stack exchange,提问作者QDex
相关产品推荐
相关产品推荐

