airflow.sensors.date_time

Module Contents

Classes

DateTimeSensor

Waits until the specified datetime.

DateTimeSensorAsync

Wait until the specified datetime occurs.

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

Bases: airflow.sensors.base.BaseSensorOperator

Waits until the specified datetime.

A major advantage of this sensor is idempotence for the target_time. It handles some cases for which TimeSensor and TimeDeltaSensor are not suited.

Example 1 :

If a task needs to wait for 11am on each execution_date. Using TimeSensor or TimeDeltaSensor, all backfill tasks started at 1am have to wait for 10 hours. This is unnecessary, e.g. a backfill task with {{ ds }} = '1970-01-01' does not need to wait because 1970-01-01T11:00:00 has already passed.

Example 2 :

If a DAG is scheduled to run at 23:00 daily, but one of the tasks is required to run at 01:00 next day, using TimeSensor will return True immediately because 23:00 > 01:00. Instead, we can do this:

DateTimeSensor(
    task_id="wait_for_0100",
    target_time="{{ next_execution_date.tomorrow().replace(hour=1) }}",
)
Parameters

target_time (str | datetime.datetime) – datetime after which the job succeeds. (templated)

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

Override when deriving this class.

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

Bases: DateTimeSensor

Wait until the specified datetime occurs.

Deferring itself to avoid taking up a worker slot while it is waiting. It is a drop-in replacement for DateTimeSensor.

Parameters
  • target_time – datetime after which the job succeeds. (templated)

  • start_from_trigger (bool) – Start the task directly from the triggerer without going into the worker.

  • trigger_kwargs (dict[str, Any] | None) – The keyword arguments passed to the trigger when start_from_trigger is set to True during dynamic task mapping. This argument is not used in standard usage.

  • end_from_trigger (bool) – End the task directly from the triggerer without going into the worker.

start_trigger_args[source]
start_from_trigger = False[source]
execute(context)[source]

Derive when creating an operator.

Context is the same dictionary used as when rendering jinja templates.

Refer to get_template_context for more context.

execute_complete(context, event=None)[source]

Handle the event when the trigger fires and return immediately.

Was this entry helpful?