airflow.timetables.base

模組內容

類別

DataInterval

DagRun 運作的資料間隔。

TimeRestriction

DAG 可以排程執行的時間限制。

DagRunInfo

排程 DagRun 的資訊。

Timetable

所有 Timetable 類別都應實作的協定。

class airflow.timetables.base.DataInterval[來源]

基底: NamedTuple

DagRun 運作的資料間隔。

startend **必須** 為「感知型」,即包含時區資訊。

start: pendulum.DateTime[來源]
end: pendulum.DateTime[來源]
classmethod exact(at)[來源]

表示僅包含確切時間的「間隔」。

class airflow.timetables.base.TimeRestriction[來源]

基底: NamedTuple

DAG 可以排程執行的時間限制。

具體來說,執行時間不得早於 earliest,也不得晚於 latest。如果 catchupFalse,則執行時間也不得早於目前時間,即不回填「錯過」的排程。

這些值通常在 DAG 或任務的 start_dateend_datecatchup 引數中設定。

earliestlatest 若非 None,則為包含;DAG 執行可以精確地在任一時間點發生。對於 Airflow 建立的 TimeRestriction 實例,保證它們都是感知型(即包含時區資訊)。

earliest: pendulum.DateTime | None[來源]
latest: pendulum.DateTime | None[來源]
catchup: bool[來源]
class airflow.timetables.base.DagRunInfo[來源]

基底: NamedTuple

排程 DagRun 的資訊。

當時間表被要求排程 DagRun 建立時,將傳回此類別的實例。

property logical_date: pendulum.DateTime[來源]

推斷代表 DagRun 的邏輯日期。

這取代了 Airflow 2.1 及更早版本中的 execution_date。概念基本相同,只是名稱不同。

run_after: pendulum.DateTime[來源]

建立此 DagRun 及其任務排程的最早時間。

這**必須**為「感知型」,即包含時區資訊。

data_interval: DataInterval[來源]

此 DagRun 運作的資料間隔。

classmethod exact(at)[來源]

表示在確切時間執行的執行。

classmethod interval(start, end)[來源]

表示在連續排程上執行的執行。

在此類排程中,每個資料間隔在前一個間隔結束後立即開始,並且每個執行都在間隔結束後立即排程。這適用於 AIP-39 之前的所有排程,除了 @onceNone

class airflow.timetables.base.Timetable[來源]

基底: airflow.typing_compat.Protocol

所有 Timetable 類別都應實作的協定。

property can_be_scheduled[來源]

此時間表是否可以實際以自動方式排程執行。

預設值為且通常應為 True(包括非週期性執行類型,例如 @once 和資料觸發表),但 NullTimetable 將其設定為 False

property summary: str[來源]

時間表的簡短摘要。

這用於在 Web UI 中顯示時間表。例如,cron 表達式時間表可以使用它來顯示表達式。預設實作傳回時間表的類型名稱。

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

generate_run_id(*, run_type, logical_date, data_interval, **extra)[來源]

此條目是否有幫助?