2025 年 Airflow 峰会将于 10 月 07-09 日召开。立即注册获取早鸟票!

airflow.timetables.base

DataInterval

DagRun 操作的数据间隔。

TimeRestriction

限制 DAG 可以被调度运行的时间。

DagRunInfo

调度 DagRun 的信息。

Timetable

所有 Timetable 类应实现的协议。

模块内容

class airflow.timetables.base.DataInterval[source]

基类:NamedTuple

DagRun 操作的数据间隔。

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

start: pendulum.DateTime[source]
end: pendulum.DateTime[source]
classmethod exact(at)[source]

表示仅包含一个精确时间点的“间隔”。

class airflow.timetables.base.TimeRestriction[source]

基类:NamedTuple

限制 DAG 可以被调度运行的时间。

具体来说,运行时间不能早于 earliest,也不能晚于 latest。如果 catchupFalse,运行时间也不能早于当前时间,即“错过的”调度不会被回填。

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

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

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

基类:NamedTuple

调度 DagRun 的信息。

时间表在被要求调度创建 DagRun 时会返回此类的实例。

run_after: pendulum.DateTime[source]

创建此 DagRun 并调度其任务的最早时间。

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

data_interval: DataInterval[source]

此 DagRun 操作的数据间隔。

classmethod exact(at)[source]

表示在精确时间点上的运行。

classmethod interval(start, end)[source]

表示连续调度下的运行。

在这种调度中,每个数据间隔在前一个结束后立即开始,并且每次运行在间隔结束后立即调度。这适用于 AIP-39 之前除 @onceNone 外的所有调度。

property logical_date: pendulum.DateTime[source]

推断表示 DagRun 的逻辑日期。

这取代了 Airflow 2.1 及之前版本的 execution_date。思想本质上是相同的,只是名称不同。

class airflow.timetables.base.Timetable[source]

基类:Protocol

所有 Timetable 类应实现的协议。

description: str = ''[source]

时间表的人类可读描述。

例如,这可以从 cron 表达式 '30 21 * * 5' 生成类似 'At 21:30, only on Friday' 的描述。这用于 webserver UI 中。

periodic: bool = True[source]

此时间表是否周期性运行。

此属性默认为且通常应为 True,但某些特殊设置如 schedule=None"@once" 将其设为 False

can_be_scheduled: bool = True[source]

此时间表是否能实际以自动化方式调度运行。

此属性默认为且通常应为 True(包括非周期性执行类型如 @once 和数据触发的时间表),但 NullTimetable 将其设为 False

run_ordering: collections.abc.Sequence[str] = ('data_interval_end', 'logical_date')[source]

由此时间表触发的运行在 UI 中的排序方式。

这应该是 DAG 运行对象上的字段名称列表。

active_runs_limit: int | None = None[source]

DAG 同时可以拥有的最大活动运行数。

这在 DAG 初始化期间调用,返回值用作 DAG 的默认 max_active_runs。此属性通常应返回 None,但在某些情况下(例如对于 ContinuousTimetable),限制 DAG 运行的并行度有很好的理由。

asset_condition: airflow.sdk.definitions.asset.BaseAsset[source]

使用此时间表触发 DAG 的资产条件。

如果此属性不是 None,则它应该是一个或多个控制 DAG 资产触发器的资产。

classmethod deserialize(data)[source]

从数据反序列化时间表。

这在反序列化序列化的 DAG 时调用。data 将是 DAG 序列化期间由 serialize 返回的内容。默认实现构建时间表时不带任何参数。

serialize()[source]

序列化时间表以便进行 JSON 编码。

这在 DAG 序列化期间调用,用于将时间表信息存储在数据库中。它应返回一个 JSON 可序列化的字典,该字典将在反序列化 DAG 时传递给 deserialize。默认实现返回一个空字典。

validate()[source]

验证时间表是否正确指定。

重写此方法以提供在 DAG 放入 dagbag 时触发的运行时验证。默认实现不做任何事情。

引发::

验证失败时引发 AirflowTimetableInvalid。

property summary: str[source]

时间表的简短摘要。

这用于在 web UI 中显示时间表。例如,cron 表达式时间表可以使用此属性来显示表达式。默认实现返回时间表的类型名称。

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, run_after, data_interval, **extra)[source]

生成一个唯一的运行 ID。

参数::
  • run_type (airflow.utils.types.DagRunType) – DAG 运行的类型。

  • run_after (pendulum.DateTime) – DAG 不能在其之前运行的日期时间。

  • data_interval (DataInterval | None) – DAG 运行的数据间隔。

此条目是否有帮助?