Airflow Summit 2026 is coming August 31 - September 2 in Austin, TX. Register now to secure your spot!

airflow.timetables.events

Classes

EventsTimetable

Timetable that schedules DAG runs at specific listed datetimes.

Module Contents

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 (collections.abc.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 (str | None) – 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

event_dates[source]
restrict_to_events = False[source]
property summary: str[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__()[source]
next_dagrun_info(*, last_automated_data_interval, restriction)[source]

Provide information to schedule the next DagRun.

The default implementation raises NotImplementedError.

Parameters:
  • last_automated_data_interval (airflow.timetables.base.DataInterval | None) – The data interval of the associated DAG’s last scheduled or backfilled run (manual runs not considered). This is only None when the Dag is being scheduled for the first time, which happens when the Dag processor first parses the Dag – before any Dag run exists.

  • restriction (airflow.timetables.base.TimeRestriction) – Restriction to apply when scheduling the DAG run. See documentation of TimeRestriction for details.

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

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.

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.

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.

Was this entry helpful?