airflow.sensors.date_time

模組內容

類別

DateTimeSensor

等待直到指定的日期時間。

DateTimeSensorAsync

等待直到指定的日期時間發生。

class airflow.sensors.date_time.DateTimeSensor(*, target_time, **kwargs)[原始碼]

基類: airflow.sensors.base.BaseSensorOperator

等待直到指定的日期時間。

此感測器的主要優勢是對 target_time 的冪等性。它處理了 TimeSensorTimeDeltaSensor 不適用的某些情況。

範例 1 :

如果任務需要在每個 execution_date 等待上午 11 點。使用 TimeSensorTimeDeltaSensor,所有在凌晨 1 點開始的回填任務都必須等待 10 小時。這是沒有必要的,例如,{{ ds }} = '1970-01-01' 的回填任務不需要等待,因為 1970-01-01T11:00:00 已經過去了。

範例 2 :

如果 DAG 計劃每天 23:00 運行,但其中一個任務需要在隔天 01:00 運行,使用 TimeSensor 會立即返回 True,因為 23:00 > 01:00。相反地,我們可以這樣做

DateTimeSensor(
    task_id="wait_for_0100",
    target_time="{{ next_execution_date.tomorrow().replace(hour=1) }}",
)
參數

target_time (str | datetime.datetime) – 工作成功的日期時間。(已模板化)

template_fields: Sequence[str] = ('target_time',)[原始碼]
poke(context)[原始碼]

衍生此類別時覆寫。

class airflow.sensors.date_time.DateTimeSensorAsync(*, start_from_trigger=False, end_from_trigger=False, trigger_kwargs=None, **kwargs)[原始碼]

基類: DateTimeSensor

等待直到指定的日期時間發生。

延遲自身以避免在等待時佔用 worker 插槽。它是 DateTimeSensor 的直接替代品。

參數
  • target_time – 工作成功的日期時間。(已模板化)

  • start_from_trigger (bool) – 直接從觸發器啟動任務,而無需進入 worker。

  • trigger_kwargs (dict[str, Any] | None) – 當在動態任務映射期間將 start_from_trigger 設置為 True 時,傳遞給觸發器的關鍵字參數。此參數在標準用法中未使用。

  • end_from_trigger (bool) – 直接從觸發器結束任務,而無需進入 worker。

start_trigger_args[原始碼]
start_from_trigger = False[原始碼]
execute(context)[原始碼]

建立運算子時衍生。

Context 是與渲染 Jinja 模板時使用的字典相同。

請參考 get_template_context 以獲取更多 Context 資訊。

execute_complete(context, event=None)[原始碼]

當觸發器觸發時處理事件並立即返回。

這個條目有幫助嗎?