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

airflow.timetables.assets

AssetOrTimeSchedule

结合基于时间的调度和基于事件的调度。

模块内容

class airflow.timetables.assets.AssetOrTimeSchedule(*, timetable, assets)[源代码]

基类: airflow.timetables.simple.AssetTriggeredTimetable

结合基于时间的调度和基于事件的调度。

timetable[源代码]
description = 'Triggered by assets or Uninferable'[源代码]

时间表的人类可读描述。

例如,这可以从 cron 表达式 '30 21 * * 5' 中生成类似 '周五 21:30 执行' 的内容。这用于 webserver UI 中。

periodic[源代码]

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

默认情况下通常应为 True,但某些特殊设置(如 schedule=None"@once")会将其设置为 False

can_be_scheduled[源代码]

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

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

active_runs_limit[源代码]

一个 DAG 同时可以拥有的最大活跃运行数。

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

classmethod deserialize(data)[源代码]

从数据反序列化时间表。

这在序列化的 DAG 被反序列化时调用。data 将是 DAG 序列化期间由 serialize 返回的任何内容。默认实现会在没有任何参数的情况下构造时间表。

serialize()[源代码]

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

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

validate()[源代码]

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

重写此方法以提供在将 DAG 放入 dagbag 时引发的运行时验证。默认实现不执行任何操作。

引发:

验证失败时引发 AirflowTimetableInvalid。

property summary: str[源代码]

时间表的简短摘要。

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

infer_manual_data_interval(*, run_after)[源代码]

手动触发 DAG 运行时,为其推断数据间隔。

这用于例如手动触发的运行,其中 run_after 是用户触发运行的时间。默认实现会引发 NotImplementedError

next_dagrun_info(*, last_automated_data_interval, restriction)[源代码]

提供用于调度下一个 DagRun 的信息。

默认实现会引发 NotImplementedError

参数:
返回:

关于何时可以调度下一个 DagRun 的信息。 None 表示不会发生 DagRun。这并不意味着此 DAG 将不再调度任何运行;在其他时间询问时,时间表可以返回一个 DagRunInfo 对象。

返回类型:

airflow.timetables.base.DagRunInfo | None

generate_run_id(*, run_type, **kwargs)[源代码]

根据运行类型 (Run Type)、run_after 和逻辑日期生成运行 ID。

参数:
  • run_type (airflow.utils.types.DagRunType) – DagRun 的类型

  • data_interval – 数据间隔

  • run_after – DAG 运行在此日期之前不会开始。

此条目是否有帮助?