airflow.timetables.base¶
類¶
DagRun 操作的資料間隔。 |
|
限制 DAG 可以被排程執行的時間。 |
|
排程 DagRun 的資訊。 |
|
所有 Timetable 類應實現的協議。 |
模組內容¶
- class airflow.timetables.base.DataInterval[source]¶
基類:
NamedTupleDagRun 操作的資料間隔。
start和end**必須**是“感知時區的”,即包含時區資訊。
- class airflow.timetables.base.TimeRestriction[source]¶
基類:
NamedTuple限制 DAG 可以被排程執行的時間。
具體來說,執行時間不能早於
earliest,也不能晚於latest。如果catchup是 False,執行時間也不能早於當前時間,即“錯過的”排程不會被回填。這些值通常在 DAG 或任務的
start_date、end_date和catchup引數中設定。earliest和latest(如果不是 None)都是包含性的;DAG 執行可以正好發生在任一時間點。對於 Airflow 建立的TimeRestriction例項,它們保證是感知時區的(即包含時區資訊)。
- class airflow.timetables.base.DagRunInfo[source]¶
基類:
NamedTuple排程 DagRun 的資訊。
時間表在被要求排程建立 DagRun 時會返回此類的例項。
- data_interval: DataInterval[source]¶
此 DagRun 操作的資料間隔。
- 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 執行的資料間隔。