airflow.providers.standard.sensors.date_time

StartTriggerArgs

從觸發器啟動任務執行所需的引數。

DateTimeSensor

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

DateTimeSensorAsync

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

模組內容

class airflow.providers.standard.sensors.date_time.StartTriggerArgs[原始碼]

從觸發器啟動任務執行所需的引數。

trigger_cls: str[原始碼]
next_method: str[原始碼]
trigger_kwargs: dict[str, Any] | None = None[原始碼]
next_kwargs: dict[str, Any] | None = None[原始碼]
timeout: datetime.timedelta | None = None[原始碼]
class airflow.providers.standard.sensors.date_time.DateTimeSensor(*, target_time, **kwargs)[原始碼]

基礎: airflow.sensors.base.BaseSensorOperator

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

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

示例 1 :

如果一個任務需要在每個 logical_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="{{ data_interval_end.tomorrow().replace(hour=1) }}",
)
引數

target_time (str | datetime.datetime) – 任務在該日期時間之後成功。(模板化)

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

派生此類時覆蓋。

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

基礎: DateTimeSensor

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

推遲自身執行,避免在等待時佔用工作程序槽。它是 DateTimeSensor 的直接替代品。

引數
  • target_time – 任務在該日期時間之後成功。(模板化)

  • start_from_trigger (bool) – 直接從觸發器啟動任務,無需進入工作程序。

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

  • end_from_trigger (bool) – 直接從觸發器結束任務,無需進入工作程序。

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

建立運算子時派生。

執行任務的主要方法。上下文是與渲染 Jinja 模板時使用的相同的字典。

更多上下文請參閱 get_template_context。

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

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

此條目是否有幫助?