2025 年 Airflow 峰會將於 10 月 07-09 日召開。立即註冊獲取早鳥票!

airflow.timetables.base

DataInterval

DagRun 操作的資料間隔。

TimeRestriction

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

DagRunInfo

排程 DagRun 的資訊。

Timetable

所有 Timetable 類應實現的協議。

模組內容

class airflow.timetables.base.DataInterval[source]

基類:NamedTuple

DagRun 操作的資料間隔。

startend **必須**是“感知時區的”,即包含時區資訊。

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

表示僅包含一個精確時間點的“間隔”。

class airflow.timetables.base.TimeRestriction[source]

基類:NamedTuple

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

具體來說,執行時間不能早於 earliest,也不能晚於 latest。如果 catchupFalse,執行時間也不能早於當前時間,即“錯過的”排程不會被回填。

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

earliestlatest(如果不是 None)都是包含性的;DAG 執行可以正好發生在任一時間點。對於 Airflow 建立的 TimeRestriction 例項,它們保證是感知時區的(即包含時區資訊)。

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

基類:NamedTuple

排程 DagRun 的資訊。

時間表在被要求排程建立 DagRun 時會返回此類的例項。

run_after: pendulum.DateTime[source]

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

這**必須**是“感知時區的”,即包含時區資訊。

data_interval: DataInterval[source]

此 DagRun 操作的資料間隔。

classmethod exact(at)[source]

表示在精確時間點上的執行。

classmethod interval(start, end)[source]

表示連續排程下的執行。

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

property logical_date: pendulum.DateTime[source]

推斷表示 DagRun 的邏輯日期。

這取代了 Airflow 2.1 及之前版本的 execution_date。思想本質上是相同的,只是名稱不同。

class airflow.timetables.base.Timetable[source]

基類:Protocol

所有 Timetable 類應實現的協議。

description: str = ''[source]

時間表的人類可讀描述。

例如,這可以從 cron 表示式 '30 21 * * 5' 生成類似 'At 21:30, only on Friday' 的描述。這用於 webserver UI 中。

periodic: bool = True[source]

此時間表是否週期性執行。

此屬性預設為且通常應為 True,但某些特殊設定如 schedule=None"@once" 將其設為 False

can_be_scheduled: bool = True[source]

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

此屬性預設為且通常應為 True(包括非週期性執行型別如 @once 和資料觸發的時間表),但 NullTimetable 將其設為 False

run_ordering: collections.abc.Sequence[str] = ('data_interval_end', 'logical_date')[source]

由此時間表觸發的執行在 UI 中的排序方式。

這應該是 DAG 執行物件上的欄位名稱列表。

active_runs_limit: int | None = None[source]

DAG 同時可以擁有的最大活動執行數。

這在 DAG 初始化期間呼叫,返回值用作 DAG 的預設 max_active_runs。此屬性通常應返回 None,但在某些情況下(例如對於 ContinuousTimetable),限制 DAG 執行的並行度有很好的理由。

asset_condition: airflow.sdk.definitions.asset.BaseAsset[source]

使用此時間表觸發 DAG 的資產條件。

如果此屬性不是 None,則它應該是一個或多個控制 DAG 資產觸發器的資產。

classmethod deserialize(data)[source]

從資料反序列化時間表。

這在反序列化序列化的 DAG 時呼叫。data 將是 DAG 序列化期間由 serialize 返回的內容。預設實現構建時間表時不帶任何引數。

serialize()[source]

序列化時間表以便進行 JSON 編碼。

這在 DAG 序列化期間呼叫,用於將時間表資訊儲存在資料庫中。它應返回一個 JSON 可序列化的字典,該字典將在反序列化 DAG 時傳遞給 deserialize。預設實現返回一個空字典。

validate()[source]

驗證時間表是否正確指定。

重寫此方法以提供在 DAG 放入 dagbag 時觸發的執行時驗證。預設實現不做任何事情。

引發::

驗證失敗時引發 AirflowTimetableInvalid。

property summary: str[source]

時間表的簡短摘要。

這用於在 web UI 中顯示時間表。例如,cron 表示式時間表可以使用此屬性來顯示錶達式。預設實現返回時間表的型別名稱。

abstract infer_manual_data_interval(*, run_after)[source]

手動觸發 DAG 執行時,推斷其資料間隔。

這用於例如手動觸發的執行,其中 run_after 是使用者觸發執行的時間。預設實現引發 NotImplementedError

abstract next_dagrun_info(*, last_automated_data_interval, restriction)[source]

提供資訊以排程下一個 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, run_after, data_interval, **extra)[source]

生成一個唯一的執行 ID。

引數::
  • run_type (airflow.utils.types.DagRunType) – DAG 執行的型別。

  • run_after (pendulum.DateTime) – DAG 不能在其之前執行的日期時間。

  • data_interval (DataInterval | None) – DAG 執行的資料間隔。

此條目是否有幫助?