跳到内容

airflow-dag-no-schedule-argument (AIR002)

来源于 Airflow 代码检查器。

此规则不稳定且处于预览状态。使用需要 --preview 标志。

作用

检查 DAG() 类或 @dag() 装饰器是否缺少显式的 schedule (或 Airflow 1 的 schedule_interval) 参数。

为什么这不好?

Airflow 2 上 schedule 参数和 Airflow 1 上 schedule_interval 参数的默认值为 timedelta(days=1),这几乎不是用户想要的。Airflow 3 将默认值更改为 None,这将破坏使用隐式默认值的现有 DAG。

如果您的 DAG 没有显式的 schedule / schedule_interval 参数,Airflow 2 每天都会为其安排一次运行 (在由 start_date 确定的时间)。如果没有例外或用户可见的其他消息,这样的 DAG 将不再在 Airflow 3 上被安排运行。

示例

from airflow import DAG


# Using the implicit default schedule.
dag = DAG(dag_id="my_dag")

建议改为

from datetime import timedelta

from airflow import DAG


dag = DAG(dag_id="my_dag", schedule=timedelta(days=1))