airflow.timetables.trigger

Module Contents

Classes

CronTriggerTimetable

Timetable that triggers DAG runs according to a cron expression.

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

Bases: airflow.timetables._cron.CronMixin, airflow.timetables.base.Timetable

Timetable that triggers DAG runs according to a cron expression.

This is different from CronDataIntervalTimetable, where the cron expression specifies the data interval of a DAG run. With this timetable, the data intervals are specified independently from the cron expression. Also for the same reason, this timetable kicks off a DAG run immediately at the start of the period (similar to POSIX cron), instead of needing to wait for one data interval to pass.

Don’t pass @once in here; use OnceTimetable instead.

Parameters
  • cron (str) – cron string that defines when to run

  • timezone (str | pendulum.tz.timezone.Timezone | pendulum.tz.timezone.FixedTimezone) – Which timezone to use to interpret the cron string

  • interval (datetime.timedelta | dateutil.relativedelta.relativedelta) – timedelta that defines the data interval start. Default 0.

run_immediately controls, if no start_time is given to the DAG, when the first run of the DAG should be scheduled. It has no effect if there already exist runs for this DAG.

  • If True, always run immediately the most recent possible DAG run.

  • If False, wait to run until the next scheduled time in the future.

  • If passed a timedelta, will run the most recent possible DAG run if that run’s data_interval_end is within timedelta of now.

  • If None, the timedelta is calculated as 10% of the time between the most recent past scheduled time and the next scheduled time. E.g. if running every hour, this would run the previous time if less than 6 minutes had past since the previous run time, otherwise it would wait until the next hour.

classmethod deserialize(data)[source]

Deserialize a timetable from data.

This is called when a serialized DAG is deserialized. data will be whatever was returned by serialize during DAG serialization. The default implementation constructs the timetable without any arguments.

serialize()[source]

Serialize the timetable for JSON encoding.

This is called during DAG serialization to store timetable information in the database. This should return a JSON-serializable dict that will be fed into deserialize when the DAG is deserialized. The default implementation returns an empty dict.

infer_manual_data_interval(*, run_after)[source]

When a DAG run is manually triggered, infer a data interval for it.

This is used for e.g. manually-triggered runs, where run_after would be when the user triggers the run. The default implementation raises NotImplementedError.

next_dagrun_info(*, last_automated_data_interval, restriction)[source]

Provide information to schedule the next DagRun.

The default implementation raises NotImplementedError.

Parameters
Returns

Information on when the next DagRun can be scheduled. None means a DagRun will not happen. This does not mean no more runs will be scheduled even again for this DAG; the timetable can return a DagRunInfo object when asked at another time.

Return type

airflow.timetables.base.DagRunInfo | None

Was this entry helpful?