airflow.providers.standard.sensors.date_time

StartTriggerArgs

从触发器启动任务执行所需的参数。

DateTimeSensor

等待直到指定的日期时间。

DateTimeSensorAsync

等待直到指定的日期时间发生。

模块内容

class airflow.providers.standard.sensors.date_time.StartTriggerArgs[源代码]

从触发器启动任务执行所需的参数。

trigger_cls: str[源代码]
next_method: str[源代码]
trigger_kwargs: dict[str, Any] | None = None[源代码]
next_kwargs: dict[str, Any] | None = None[源代码]
timeout: datetime.timedelta | None = None[源代码]
class airflow.providers.standard.sensors.date_time.DateTimeSensor(*, target_time, **kwargs)[源代码]

基础: airflow.sensors.base.BaseSensorOperator

等待直到指定的日期时间。

此传感器的主要优势是 target_time 的幂等性。它处理了 TimeSensorTimeDeltaSensor 不适合的一些情况。

示例 1 :

如果一个任务需要在每个 logical_date 的上午 11 点等待。使用 TimeSensorTimeDeltaSensor,所有在凌晨 1 点启动的回填任务都必须等待 10 小时。这是不必要的,例如 {{ ds }} = '1970-01-01' 的回填任务不需要等待,因为 1970-01-01T11:00:00 已经过去了。

示例 2 :

如果一个 DAG 定期在每天 23:00 运行,但其中一个任务需要在第二天 01:00 运行,使用 TimeSensor 将会立即返回 True,因为 23:00 > 01:00。相反,我们可以这样做:

DateTimeSensor(
    task_id="wait_for_0100",
    target_time="{{ data_interval_end.tomorrow().replace(hour=1) }}",
)
参数

target_time (str | datetime.datetime) – 任务在该日期时间之后成功。(模板化)

template_fields: collections.abc.Sequence[str] = ('target_time',)[源代码]
poke(context)[源代码]

派生此类时覆盖。

class airflow.providers.standard.sensors.date_time.DateTimeSensorAsync(*, start_from_trigger=False, end_from_trigger=False, trigger_kwargs=None, **kwargs)[源代码]

基础: DateTimeSensor

等待直到指定的日期时间发生。

推迟自身执行,避免在等待时占用工作进程槽。它是 DateTimeSensor 的直接替代品。

参数
  • target_time – 任务在该日期时间之后成功。(模板化)

  • start_from_trigger (bool) – 直接从触发器启动任务,无需进入工作进程。

  • trigger_kwargs (dict[str, Any] | None) – 当在动态任务映射期间将 start_from_trigger 设置为 True 时,传递给触发器的关键字参数。在标准用法中不使用此参数。

  • end_from_trigger (bool) – 直接从触发器结束任务,无需进入工作进程。

start_trigger_args[源代码]
start_from_trigger = False[源代码]
end_from_trigger = False[源代码]
execute(context)[源代码]

创建操作符时派生。

执行任务的主要方法。上下文是与渲染 Jinja 模板时使用的相同的字典。

更多上下文请参阅 get_template_context。

execute_complete(context, event=None)[源代码]

处理触发器触发时的事件并立即返回。

此条目是否有帮助?