airflow.timetables.base

模块内容

DataInterval

DagRun 操作的数据间隔。

TimeRestriction

对何时可以调度 DAG 运行的限制。

DagRunInfo

调度 DagRun 的信息。

Timetable

所有 Timetable 类都应实现的协议。

class airflow.timetables.base.DataInterval[源代码]

基类:NamedTuple

DagRun 操作的数据间隔。

startend必须是“已知的”,即包含时区信息。

start: pendulum.DateTime[源代码]
end: pendulum.DateTime[源代码]
classmethod exact(at)[源代码]

表示仅包含确切时间的“间隔”。

class airflow.timetables.base.TimeRestriction[源代码]

基类:NamedTuple

对何时可以调度 DAG 运行的限制。

具体来说,运行时间不得早于 earliest,也不得晚于 latest。 如果 catchupFalse,则运行时间也不得早于当前时间,即不会回填“错过”的计划。

这些值通常在 DAG 或任务的 start_dateend_datecatchup 参数上设置。

earliestlatest 如果不是 None,则都是包含的;DAG 运行可以恰好在任何一个时间点发生。 保证它们是已知的(即包含时区信息),对于由 Airflow 创建的 TimeRestriction 实例。

earliest: pendulum.DateTime | None[源代码]
latest: pendulum.DateTime | None[源代码]
catchup: bool[源代码]
class airflow.timetables.base.DagRunInfo[源代码]

基类:NamedTuple

调度 DagRun 的信息。

当时间表被要求安排 DagRun 创建时,将返回此实例。

property logical_date: pendulum.DateTime[源代码]

推断表示 DagRun 的逻辑日期。

这取代了 Airflow 2.1 及更早版本中的 execution_date。 这个想法本质上是相同的,只是名称不同。

run_after: pendulum.DateTime[源代码]

创建此 DagRun 及其任务的最早时间。

必须是“已知的”,即包含时区信息。

data_interval: DataInterval[源代码]

此 DagRun 操作的数据间隔。

classmethod exact(at)[源代码]

表示在确切时间运行。

classmethod interval(start, end)[源代码]

表示在连续计划上运行。

在这样的计划中,每个数据间隔在前一个间隔结束后立即开始,并且每个运行都在间隔结束后立即安排。 这适用于 AIP-39 之前的所有计划,除了 @onceNone

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

generate_run_id(*, run_type, logical_date, data_interval, **extra)[source]

此条目是否有帮助?