airflow.sensors.date_time

模块内容

DateTimeSensor

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

DateTimeSensorAsync

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

class airflow.sensors.date_time.DateTimeSensor(*, target_time, **kwargs)[source]

基类: airflow.sensors.base.BaseSensorOperator

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

此传感器的一个主要优点是 target_time 的幂等性。它处理 TimeSensorTimeDeltaSensor 不适用的某些情况。

示例 1 :

如果一个任务需要在每个 execution_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="{{ next_execution_date.tomorrow().replace(hour=1) }}",
)
参数

target_time ( str | datetime.datetime ) – 作业成功的日期时间之后的时间。(模板化)

template_fields: Sequence[str] = ('target_time',)[source]
poke(context)[source]

在派生此类时重写。

class airflow.sensors.date_time.DateTimeSensorAsync(*, start_from_trigger=False, end_from_trigger=False, trigger_kwargs=None, **kwargs)[source]

基类: 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[source]
start_from_trigger = False[source]
execute(context)[source]

在创建操作符时派生。

上下文与渲染 jinja 模板时使用的字典相同。

有关更多上下文,请参阅 get_template_context。

execute_complete(context, event=None)[source]

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

此条目是否有帮助?