Airflow Summit 2025 即將於10月07-09日到來。立即註冊享受早鳥票!

airflow.hooks.base

所有鉤子的基類。

屬性

log

BaseHook

鉤子的抽象基類。

DiscoverableHook

提供者可以實現的介面,以便被 ProvidersManager 發現。

模組內容

airflow.hooks.base.log[source]
class airflow.hooks.base.BaseHook(logger_name=None)[source]

基類: airflow.utils.log.logging_mixin.LoggingMixin

鉤子的抽象基類。

鉤子旨在作為與外部系統互動的介面。MySqlHook、HiveHook、PigHook 返回可以處理與這些系統的特定例項的連線和互動的物件,並暴露一致的方法來與它們互動。

引數:

logger_name (str | None) – 鉤子用於發出日誌的記錄器名稱。如果設定為 None (預設),記錄器名稱將回退到 airflow.task.hooks.{class.__module__}.{class.__name__} (例如,DbApiHook 將使用 airflow.task.hooks.airflow.providers.common.sql.hooks.sql.DbApiHook 作為記錄器)。

classmethod get_connection(conn_id)[source]

根據連線 ID 獲取連線。

引數:

conn_id (str) – 連線 ID

返回:

連線

返回型別:

airflow.models.connection.Connection

classmethod get_hook(conn_id, hook_params=None)[source]

返回此連線 ID 的預設鉤子。

引數:
  • conn_id (str) – 連線 ID

  • hook_params (dict | None) – 鉤子引數

返回:

此連線的預設鉤子

返回型別:

BaseHook

abstract get_conn()[source]

返回該鉤子的連線。

classmethod get_connection_form_widgets()[source]
classmethod get_ui_field_behaviour()[source]
class airflow.hooks.base.DiscoverableHook[source]

基類: Protocol

提供者可以實現的介面,以便被 ProvidersManager 發現。

它不被任何鉤子使用,而只是這裡描述的方法和類欄位由那些鉤子實現。每個方法都是可選的 – 只實現你需要的那些。

conn_name_attr、default_conn_name、conn_type 應由那些希望在呼叫 get_hook 方法時自動從 connection_type 對映到 Hook 的鉤子實現。

此外,當您希望該鉤子在 UI 選擇名稱中具有自定義名稱時,應設定 hook_name。如果未指定,將使用 conn_name。

get_ui_field_behaviour 和 get_connection_form_widgets 是可選的 - 如果您想自定義連線表單螢幕,請覆蓋它們。您可以透過 get_connection_form_widgets 方法新增額外的部件來解析您的額外欄位,並透過 get_ui_field_behaviour 方法隱藏或重新標記欄位或使用佔位符預填充它們。

請注意,類層次結構中的每個類都需要設定 get_ui_field_behaviour 和 get_connection_form_widgets 才能應用部件自定義。

例如,即使您想使用來自父類的欄位,您也必須在您的類上顯式地擁有一個方法。

@classmethod
def get_ui_field_behaviour(cls):
    return super().get_ui_field_behaviour()

您還需要將 Hook 類名新增到 provider.yaml 檔案中的 ‘hook_class_names’ 列表,如果您構建內部提供者;或者在您準備的包中,將其在 provider_info 入口點返回的字典中返回。

您可以在 airflow/providers/jdbc/hooks/jdbc.py 中看到一些示例。

conn_name_attr: str[source]
default_conn_name: str[source]
conn_type: str[source]
hook_name: str[source]
static get_connection_form_widgets()[source]

返回要新增的部件字典,供鉤子處理額外值。

如果您有類層次結構,通常您的類所需的部件已經由基類新增,因此無需實現此方法。如果您嘗試新增已經被基類新增的部件,實際上可能會在日誌中產生警告。

請注意,字典的值應為 wtforms.Field 型別。為了匯入效率,這裡未新增。

static get_ui_field_behaviour()[source]

UI 欄位的屬性。

返回描述要在處理連線表單的 javascript 中實現的自定義的字典。應符合 airflow/customized_form_field_behaviours.schema.json’

如果您在派生類中更改 conn_type,您也應該實現此方法並返回適合您的 Hook 的欄位自定義。這是因為子 Hook 通常會有不同的 conn_type,並且自定義是按連線型別進行的。

另見

ComputeSSH 作為示例

本條目是否對您有幫助?