airflow.timetables.trigger¶
类¶
根据 cron 表达式触发 DAG 运行的时间表。 |
|
根据 cron 表达式触发 DAG 运行的时间表。 |
|
根据多个 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。
- 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 分钟,则会运行前一次;否则,会等到下一小时。
- 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
。- 参数:
last_automated_data_interval (airflow.timetables.base.DataInterval | None) – 相关 DAG 上次计划运行或回填运行的数据间隔(不考虑手动运行)。
restriction (airflow.timetables.base.TimeRestriction) – 调度 DAG 运行时应用的限制。详见
TimeRestriction
文档。
- 返回:
关于下一次 DagRun 可以何时调度的时间信息。None 表示不会发生 DagRun。这并不意味着此 DAG 不会再被调度;在其他时间查询时,时间表可以返回一个 DagRunInfo 对象。
- 返回类型: