airflow.timetables.base
¶
模块内容¶
类¶
DagRun 操作的数据间隔。 |
|
对何时可以调度 DAG 运行的限制。 |
|
调度 DagRun 的信息。 |
|
所有 Timetable 类都应实现的协议。 |
- class airflow.timetables.base.DataInterval[源代码]¶
基类:
NamedTuple
DagRun 操作的数据间隔。
start
和end
都必须是“已知的”,即包含时区信息。
- class airflow.timetables.base.TimeRestriction[源代码]¶
基类:
NamedTuple
对何时可以调度 DAG 运行的限制。
具体来说,运行时间不得早于
earliest
,也不得晚于latest
。 如果catchup
为 False,则运行时间也不得早于当前时间,即不会回填“错过”的计划。这些值通常在 DAG 或任务的
start_date
、end_date
和catchup
参数上设置。earliest
和latest
如果不是 None,则都是包含的;DAG 运行可以恰好在任何一个时间点发生。 保证它们是已知的(即包含时区信息),对于由 Airflow 创建的TimeRestriction
实例。
- class airflow.timetables.base.DagRunInfo[源代码]¶
基类:
NamedTuple
调度 DagRun 的信息。
当时间表被要求安排 DagRun 创建时,将返回此实例。
- property logical_date: pendulum.DateTime[源代码]¶
推断表示 DagRun 的逻辑日期。
这取代了 Airflow 2.1 及更早版本中的
execution_date
。 这个想法本质上是相同的,只是名称不同。
- data_interval: DataInterval[源代码]¶
此 DagRun 操作的数据间隔。
- class airflow.timetables.base.Timetable[源代码]¶
基类:
airflow.typing_compat.Protocol
所有 Timetable 类都应实现的协议。
- property can_be_scheduled[源代码]¶
此时间表是否可以实际以自动方式安排运行。
这通常默认为且通常应为 True(包括非周期性执行类型,如 @once 和数据触发的表),但
NullTimetable
会将其设置为 False。
- property summary: str[source]¶
时间表的简短摘要。
这用于在 Web UI 中显示时间表。例如,cron 表达式时间表可以使用此项来显示表达式。默认实现返回时间表的类型名称。
- description: str = ''[source]¶
时间表的人类可读描述。
例如,这可以从 cron 表达式
'30 21 * * 5'
生成类似'在 21:30,仅在 星期五'
的内容。这在 Webserver UI 中使用。
- periodic: bool = True[source]¶
此时间表是否定期运行。
这通常默认为且应该为 True,但某些特殊设置(如
schedule=None
和"@once"
)会将其设置为 False。
- run_ordering: Sequence[str] = ('data_interval_end', 'execution_date')[source]¶
从此时间表触发的运行在 UI 中应如何排序。
这应该是 DAG 运行对象上的字段名称列表。
- active_runs_limit: int | None[source]¶
一个 DAG 一次可以处于活动状态的最大活动运行次数。
这在 DAG 初始化期间被调用,并且返回值用作 DAG 的默认
max_active_runs
。这通常应返回 None,但在某些情况下(例如对于ContinuousTimetable
),限制 DAG 运行的并行性是有充分理由的。
- dataset_condition: airflow.datasets.BaseDataset[source]¶
使用此时间表触发 DAG 的数据集条件。
如果此项不是 None,则它应是一个或多个控制 DAG 数据集触发器的数据集。
- classmethod deserialize(data)[source]¶
从数据反序列化时间表。
当反序列化序列化的 DAG 时调用此方法。
data
将是 DAG 序列化期间serialize
返回的任何内容。默认实现构造时间表时不带任何参数。
- serialize()[source]¶
序列化时间表以进行 JSON 编码。
这在 DAG 序列化期间调用,以将时间表信息存储在数据库中。这应返回一个可 JSON 序列化的字典,该字典将在反序列化 DAG 时馈送到
deserialize
。默认实现返回一个空字典。
- validate()[source]¶
验证时间表是否已正确指定。
重写此方法以提供在 DAG 放入 dagbag 时引发的运行时验证。默认实现不执行任何操作。
- 引发
验证失败时引发 AirflowTimetableInvalid。
- abstract infer_manual_data_interval(*, run_after)[source]¶
手动触发 DAG 运行后,为其推断数据间隔。
这用于例如手动触发的运行,其中
run_after
将是用户触发运行的时间。默认实现引发NotImplementedError
。
- abstract next_dagrun_info(*, last_automated_data_interval, restriction)[source]¶
提供用于安排下一个 DagRun 的信息。
默认实现引发
NotImplementedError
。- 参数
last_automated_data_interval (DataInterval | None) – 关联 DAG 的上次计划或回填运行(不考虑手动运行)的数据间隔。
restriction (TimeRestriction) – 安排 DAG 运行时应用的限制。有关详细信息,请参阅
TimeRestriction
的文档。
- 返回
关于何时可以安排下一个 DagRun 的信息。 None 表示不会发生 DagRun。这并不意味着此 DAG 甚至不会再次安排更多运行;当在另一个时间被询问时,时间表可以返回 DagRunInfo 对象。
- 返回类型
DagRunInfo | None