airflow.timetables.base¶
类¶
DagRun 操作的数据间隔。 |
|
限制 DAG 可以被调度运行的时间。 |
|
调度 DagRun 的信息。 |
|
所有 Timetable 类应实现的协议。 |
模块内容¶
- class airflow.timetables.base.DataInterval[source]¶
基类:
NamedTuple
DagRun 操作的数据间隔。
start
和end
**必须**是“感知时区的”,即包含时区信息。
- class airflow.timetables.base.TimeRestriction[source]¶
基类:
NamedTuple
限制 DAG 可以被调度运行的时间。
具体来说,运行时间不能早于
earliest
,也不能晚于latest
。如果catchup
是 False,运行时间也不能早于当前时间,即“错过的”调度不会被回填。这些值通常在 DAG 或任务的
start_date
、end_date
和catchup
参数中设置。earliest
和latest
(如果不是 None)都是包含性的;DAG 运行可以正好发生在任一时间点。对于 Airflow 创建的TimeRestriction
实例,它们保证是感知时区的(即包含时区信息)。
- class airflow.timetables.base.DagRunInfo[source]¶
基类:
NamedTuple
调度 DagRun 的信息。
时间表在被要求调度创建 DagRun 时会返回此类的实例。
- data_interval: DataInterval[source]¶
此 DagRun 操作的数据间隔。
- 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 运行的数据间隔。