Module Contents



Timetable that schedules DAG runs at specific listed datetimes. Suitable for

class, restrict_to_events=False, presorted=False, description=None)[source]

Bases: airflow.timetables.base.Timetable

Timetable that schedules DAG runs at specific listed datetimes. Suitable for predictable but truly irregular scheduling such as sporting events.

  • event_dates (Iterable[pendulum.DateTime]) – List of datetimes for the DAG to run at. Duplicates will be ignored. Must be finite and of reasonable size as it will be loaded in its entirety.

  • restrict_to_events (bool) – Whether manual runs should use the most recent event or the current time

  • presorted (bool) – if True, event_dates will be assumed to be in ascending order. Provides modest performance improvement for larger lists of event_dates.

  • description (Optional[str]) – A name for the timetable to display in the UI. Default None will be shown as “X Events” where X is the len of event_dates

property summary(self)[source]

A short summary for the timetable.

This is used to display the timetable in the web UI. A cron expression timetable, for example, can use this to display the expression. The default implementation returns the timetable’s type name.


Return repr(self).

next_dagrun_info(self, *, last_automated_data_interval, restriction)[source]

Provide information to schedule the next DagRun.

The default implementation raises NotImplementedError.


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


infer_manual_data_interval(self, *, 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.


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.

classmethod deserialize(cls, 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.

Was this entry helpful?