airflow.timetables.events

Module Contents

Classes

EventsTimetable

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

class airflow.timetables.events.EventsTimetable(event_dates, 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.

Parameters
  • 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.

__repr__(self)[source]

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.

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

Optional[airflow.timetables.base.DagRunInfo]

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(self)[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.

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?