airflow.timetables.base
¶
模組內容¶
類別¶
DagRun 運作的資料間隔。 |
|
DAG 可以排程執行的時間限制。 |
|
排程 DagRun 的資訊。 |
|
所有 Timetable 類別都應實作的協定。 |
- class airflow.timetables.base.DataInterval[來源]¶
基底:
NamedTuple
DagRun 運作的資料間隔。
start
和end
**必須** 為「感知型」,即包含時區資訊。
- class airflow.timetables.base.TimeRestriction[來源]¶
基底:
NamedTuple
DAG 可以排程執行的時間限制。
具體來說,執行時間不得早於
earliest
,也不得晚於latest
。如果catchup
為 False,則執行時間也不得早於目前時間,即不回填「錯過」的排程。這些值通常在 DAG 或任務的
start_date
、end_date
和catchup
引數中設定。earliest
和latest
若非 None,則為包含;DAG 執行可以精確地在任一時間點發生。對於 Airflow 建立的TimeRestriction
實例,保證它們都是感知型(即包含時區資訊)。
- class airflow.timetables.base.DagRunInfo[來源]¶
基底:
NamedTuple
排程 DagRun 的資訊。
當時間表被要求排程 DagRun 建立時,將傳回此類別的實例。
- property logical_date: pendulum.DateTime[來源]¶
推斷代表 DagRun 的邏輯日期。
這取代了 Airflow 2.1 及更早版本中的
execution_date
。概念基本相同,只是名稱不同。
- data_interval: DataInterval[來源]¶
此 DagRun 運作的資料間隔。
- class airflow.timetables.base.Timetable[來源]¶
基底:
airflow.typing_compat.Protocol
所有 Timetable 類別都應實作的協定。
- property can_be_scheduled[來源]¶
此時間表是否可以實際以自動方式排程執行。
預設值為且通常應為 True(包括非週期性執行類型,例如 @once 和資料觸發表),但
NullTimetable
將其設定為 False。
- description: str = ''[來源]¶
時間表的易讀描述。
例如,這可以從 cron 表達式
'30 21 * * 5'
產生類似'在 21:30,僅限星期五'
的內容。這用於 Webserver UI 中。
- periodic: bool = True[來源]¶
此時間表是否定期執行。
預設值為且通常應為 True,但某些特殊設定(例如
schedule=None
和"@once"
)將其設定為 False。
- run_ordering: Sequence[str] = ('data_interval_end', 'execution_date')[來源]¶
應如何在 UI 中排序由此時間表觸發的執行。
這應為 DAG 執行物件上欄位名稱的清單。
- active_runs_limit: int | None[來源]¶
DAG 一次可以處於活動狀態的最大活動執行次數。
這在 DAG 初始化期間呼叫,傳回值用作 DAG 的預設
max_active_runs
。這通常應傳回 None,但在某些情況下,例如對於ContinuousTimetable
,限制 DAG 執行平行處理是合理的。
- dataset_condition: airflow.datasets.BaseDataset[來源]¶
使用此時間表觸發 DAG 的資料集條件。
如果這不是 None,則應為控制 DAG 資料集觸發器的資料集或組合。
- classmethod deserialize(data)[來源]¶
從資料還原序列化時間表。
這在還原序列化序列化 DAG 時呼叫。
data
將是 DAG 序列化期間serialize
傳回的任何內容。預設實作建構不帶任何引數的時間表。
- serialize()[來源]¶
序列化時間表以進行 JSON 編碼。
這在 DAG 序列化期間呼叫,以將時間表資訊儲存在資料庫中。這應傳回 JSON 可序列化字典,該字典將在還原序列化 DAG 時饋送到
deserialize
中。預設實作傳回空字典。
- validate()[來源]¶
驗證時間表是否正確指定。
覆寫此方法以提供在 DAG 放入 dagbag 時引發的執行階段驗證。預設實作不執行任何動作。
- 引發
驗證失敗時引發 AirflowTimetableInvalid。
- abstract infer_manual_data_interval(*, run_after)[來源]¶
當手動觸發 DAG 執行時,推斷其資料間隔。
這用於例如手動觸發的執行,其中
run_after
將是用戶觸發執行時的時間。預設實作引發NotImplementedError
。
- abstract next_dagrun_info(*, last_automated_data_interval, restriction)[來源]¶
提供排程下一個 DagRun 的資訊。
預設實作引發
NotImplementedError
。- 參數
last_automated_data_interval (DataInterval | None) – 相關 DAG 上次排程或回填執行的資料間隔(不考慮手動執行)。
restriction (TimeRestriction) – 排程 DAG 執行時要套用的限制。有關詳細資訊,請參閱
TimeRestriction
的文件。
- 傳回
有關何時可以排程下一個 DagRun 的資訊。None 表示不會發生 DagRun。這並不表示此 DAG 甚至不再排程更多執行;時間表可以在另一個時間被詢問時傳回 DagRunInfo 物件。
- 傳回類型
DagRunInfo | None