airflow.timetables.simple
Attributes
Classes
Timetable that never schedules anything. |
|
Timetable that schedules the execution once as soon as possible. |
|
Timetable that schedules continually, while still respecting start_date and end_date. |
|
Timetable that never schedules anything; partition keys are set at runtime. |
|
Asset-driven timetable that listens for partitioned assets. |
Module Contents
- type airflow.timetables.simple.BaseAsset = SerializedAssetBase[source]
- airflow.timetables.simple.log[source]
- class airflow.timetables.simple.NullTimetable[source]
Bases:
_TrivialTimetableTimetable that never schedules anything.
This corresponds to
schedule=None.- can_be_scheduled = False[source]
Whether this timetable can actually schedule runs in an automated manner.
This defaults to and should generally be True (including non periodic execution types like @once and data triggered tables), but
NullTimetablesets this to False.
- partitioned_at_runtime = False[source]
Whether this timetable defers partition selection to task runtime.
True for
PartitionedAtRuntime; downstream code can branch on this flag instead of usingisinstance.
- description: str = 'Never, external triggers only'[source]
Human-readable description of the timetable.
For example, this can produce something like
'At 21:30, only on Friday'from the cron expression'30 21 * * 5'. This is used in the webserver UI.
- 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.
- 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
Nonewhen 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
TimeRestrictionfor 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:
- class airflow.timetables.simple.OnceTimetable[source]
Bases:
_TrivialTimetableTimetable that schedules the execution once as soon as possible.
This corresponds to
schedule="@once".- description: str = 'Once, as soon as possible'[source]
Human-readable description of the timetable.
For example, this can produce something like
'At 21:30, only on Friday'from the cron expression'30 21 * * 5'. This is used in the webserver UI.
- 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.
- 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
Nonewhen 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
TimeRestrictionfor 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:
- class airflow.timetables.simple.ContinuousTimetable[source]
Bases:
_TrivialTimetableTimetable that schedules continually, while still respecting start_date and end_date.
This corresponds to
schedule="@continuous".- description: str = 'As frequently as possible, but only one run at a time.'[source]
Human-readable description of the timetable.
For example, this can produce something like
'At 21:30, only on Friday'from the cron expression'30 21 * * 5'. This is used in the webserver UI.
- active_runs_limit = 1[source]
Maximum active runs that can be active at one time for a DAG.
This is called during DAG initialization, and the return value is used as the DAG’s default
max_active_runs. This should generally return None, but there are good reasons to limit DAG run parallelism in some cases, such as forContinuousTimetable.
- 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.
- 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
Nonewhen 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
TimeRestrictionfor 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:
- class airflow.timetables.simple.PartitionedAtRuntime[source]
Bases:
NullTimetableTimetable that never schedules anything; partition keys are set at runtime.
This corresponds to
schedule=PartitionedAtRuntime().A run’s
partition_key(run-level provenance) must be supplied at trigger time — for example via the REST API’spartition_keyfield. Partition keys discovered at task runtime populate the emittedAssetEventrecords but do not back-fillDagRun.partition_keyafter the run has been created.- description: str = 'Never, partition key(s) set at runtime'[source]
Human-readable description of the timetable.
For example, this can produce something like
'At 21:30, only on Friday'from the cron expression'30 21 * * 5'. This is used in the webserver UI.
- partitioned_at_runtime = True[source]
Whether this timetable defers partition selection to task runtime.
True for
PartitionedAtRuntime; downstream code can branch on this flag instead of usingisinstance.
- airflow.timetables.simple.DEFAULT_PARTITION_MAPPER[source]
- class airflow.timetables.simple.PartitionedAssetTimetable(*, assets, partition_mapper_config=None, default_partition_mapper=DEFAULT_PARTITION_MAPPER)[source]
Bases:
AssetTriggeredTimetableAsset-driven timetable that listens for partitioned assets.
- partitioned = True[source]
Whether this timetable considers asset partitions.
This is True for timetables that switch scheduling to use partitions instead of the traditional logic based on logical dates and data intervals.
- 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.
- partition_mapper_config[source]
- default_partition_mapper[source]
- get_partition_mapper(*, name='', uri='')[source]
Return the partition mapper for the asset identified by name or uri.
Only called by the scheduler when
partitionedis True. The default implementation raisesNotImplementedError; timetables that setpartitioned = Truemust override this.
- property partition_mapper_info: list[airflow.timetables.base.PartitionMapperInfo][source]
JSON-serializable snapshot of partition mapper attributes per asset.
One
PartitionMapperInfoentry per asset (or asset ref) reachable fromasset_condition. Each entry uses the mapper resolved byget_partition_mapper(), so assets covered only bydefault_partition_mapper(nopartition_mapper_configentry) still appear with the default mapper’sis_rollupvalue. The UI reads this from the cachedDagModel.partition_mapper_infoinstead of deserializing the timetable on each request.Asset aliases are intentionally skipped:
SerializedAssetAlias.iter_assetsyields nothing (resolution happens at event time, not at parse time), and_build_name_uri_mapping()already warns that aliases are unsupported aspartition_mapper_configkeys. The cache therefore matches the alias-unsupported policy enforced elsewhere in this class.
- 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
deserializewhen 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.
datawill be whatever was returned byserializeduring DAG serialization. The default implementation constructs the timetable without any arguments.