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

airflow.timetables.trigger

DeltaTriggerTimetable

根据 cron 表达式触发 DAG 运行的时间表。

CronTriggerTimetable

根据 cron 表达式触发 DAG 运行的时间表。

MultipleCronTriggerTimetable

根据多个 cron 表达式触发 DAG 运行的时间表。

模块内容

class airflow.timetables.trigger.DeltaTriggerTimetable(delta, *, interval=datetime.timedelta())[source]

基类: airflow.timetables._delta.DeltaMixin, _TriggerTimetable

根据 cron 表达式触发 DAG 运行的时间表。

这与 DeltaDataIntervalTimetable 不同,其中 delta 值指定了 DAG 运行的数据间隔。使用此时间表,数据间隔是独立指定的。同样基于此原因,此时间表会在时间段开始时立即触发 DAG 运行,而不是等待一个数据间隔过去。

参数:
  • delta (datetime.timedelta | dateutil.relativedelta.relativedelta) – 两次运行之间等待的时间量。

  • interval (datetime.timedelta | dateutil.relativedelta.relativedelta) – 每次运行的数据间隔。默认值为 0。

classmethod deserialize(data)[source]

从数据反序列化时间表。

当序列化的 DAG 被反序列化时调用此方法。data 将是 DAG 序列化期间 serialize 返回的任何内容。默认实现会在不带任何参数的情况下构建时间表。

serialize()[source]

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

在 DAG 序列化期间调用此方法,将时间表信息存储在数据库中。此方法应返回一个可 JSON 序列化的字典,当 DAG 反序列化时,该字典将作为输入传递给 deserialize。默认实现返回一个空字典。

class airflow.timetables.trigger.CronTriggerTimetable(cron, *, timezone, interval=datetime.timedelta(), run_immediately=False)[source]

基类: airflow.timetables._cron.CronMixin, _TriggerTimetable

根据 cron 表达式触发 DAG 运行的时间表。

这与 CronDataIntervalTimetable 不同,其中 cron 表达式指定了 DAG 运行的数据间隔。使用此时间表,数据间隔是独立于 cron 表达式指定的。同样基于此原因,此时间表会在时间段开始时立即触发 DAG 运行(类似于 POSIX cron),而不是等待一个数据间隔过去。

不要在这里传入 @once;请改用 OnceTimetable

参数:
  • cron (str) – 定义何时运行的 cron 字符串

  • timezone (str | pendulum.tz.timezone.Timezone | pendulum.tz.timezone.FixedTimezone) – 用于解释 cron 字符串的时区

  • interval (datetime.timedelta | dateutil.relativedelta.relativedelta) – 定义数据间隔开始的 timedelta。默认为 0。

run_immediately 控制在未给 DAG 指定 start_time 的情况下,何时应安排 DAG 的首次运行。如果该 DAG 已存在运行,则此参数无效。

  • 如果为 True,则始终立即运行最近可能的 DAG 运行。

  • 如果为 False,则等到将来下一次预定时间才运行。

  • 如果传入 timedelta,如果最近可能 DAG 运行的 data_interval_end 在当前时间的 timedelta 范围内,则会运行该次运行。

  • 如果为 None,则 timedelta 计算为最近过去预定时间与下次预定时间之间间隔的 10%。例如,如果每小时运行一次,则如果在上次运行时间后不到 6 分钟,则会运行前一次;否则,会等到下一小时。

classmethod deserialize(data)[source]

从数据反序列化时间表。

当序列化的 DAG 被反序列化时调用此方法。data 将是 DAG 序列化期间 serialize 返回的任何内容。默认实现会在不带任何参数的情况下构建时间表。

serialize()[source]

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

在 DAG 序列化期间调用此方法,将时间表信息存储在数据库中。此方法应返回一个可 JSON 序列化的字典,当 DAG 反序列化时,该字典将作为输入传递给 deserialize。默认实现返回一个空字典。

class airflow.timetables.trigger.MultipleCronTriggerTimetable(*crons, timezone, interval=datetime.timedelta(), run_immediately=False)[source]

基类: airflow.timetables.base.Timetable

根据多个 cron 表达式触发 DAG 运行的时间表。

这组合了多个 CronTriggerTimetable 实例,并在其中任一时间表想要触发运行时,触发一次 DAG 运行。

在任何给定时间,即使多个时间表同时触发,也最多只触发一次运行。

description = ''[source]

时间表的可读描述。

例如,这可以从 cron 表达式 '30 21 * * 5' 生成诸如 '周五 21:30' 的内容。这在 Web 服务器 UI 中使用。

classmethod deserialize(data)[source]

从数据反序列化时间表。

当序列化的 DAG 被反序列化时调用此方法。data 将是 DAG 序列化期间 serialize 返回的任何内容。默认实现会在不带任何参数的情况下构建时间表。

serialize()[source]

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

在 DAG 序列化期间调用此方法,将时间表信息存储在数据库中。此方法应返回一个可 JSON 序列化的字典,当 DAG 反序列化时,该字典将作为输入传递给 deserialize。默认实现返回一个空字典。

property summary: str[source]

时间表的简短摘要。

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

infer_manual_data_interval(*, run_after)[source]

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

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

next_dagrun_info(*, last_automated_data_interval, restriction)[source]

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

默认实现引发 NotImplementedError

参数:
返回:

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

返回类型:

airflow.timetables.base.DagRunInfo | None

此条目有帮助吗?