airflow.hooks.base

所有 hooks (鉤點) 的基礎類別。

模組內容

類別

BaseHook

hooks (鉤點) 的抽象基礎類別。

DiscoverableHook

供應商可以實作以被 ProvidersManager 發現的介面。

屬性

log

airflow.hooks.base.log[原始碼]
class airflow.hooks.base.BaseHook(logger_name=None)[原始碼]

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

hooks (鉤點) 的抽象基礎類別。

Hooks (鉤點) 旨在作為與外部系統互動的介面。MySqlHook、HiveHook、PigHook 返回可以處理與這些系統特定實例的連線和互動的物件,並公開一致的方法與它們互動。

參數

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

classmethod get_connections(conn_id)[原始碼]

取得給定連線 ID 的所有連線作為可迭代物件。

參數

conn_id (str) – 連線 ID

返回

連線陣列

返回類型

list[airflow.models.connection.Connection]

classmethod get_connection(conn_id)[原始碼]

取得給定連線 ID 的連線。

參數

conn_id (str) – 連線 ID

返回

連線

返回類型

airflow.models.connection.Connection

classmethod get_hook(conn_id)[原始碼]

返回此連線 ID 的預設 hook (鉤點)。

參數

conn_id (str) – 連線 ID

返回

此連線的預設 hook (鉤點)

返回類型

BaseHook

abstract get_conn()[原始碼]

返回 hook (鉤點) 的連線。

classmethod get_connection_form_widgets()[原始碼]
classmethod get_ui_field_behaviour()[原始碼]
class airflow.hooks.base.DiscoverableHook[原始碼]

基底: airflow.typing_compat.Protocol

供應商可以實作以被 ProvidersManager 發現的介面。

任何 Hooks (鉤點) 皆未使用它,但此處描述的簡單方法和類別欄位由這些 Hooks (鉤點) 實作。每個方法都是選用的 – 僅實作您需要的方法。

conn_name_attr、default_conn_name、conn_type 應由那些想要在以 connection_type 呼叫 get_hook 方法時自動從 connection_type -> Hook 映射的 Hooks (鉤點) 實作。

此外,當您希望 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()

如果您建置內部供應商,或者在您準備的套件中的 provider_info entrypoint 返回的字典中返回 Hook 類別名稱,您還需要將 Hook 類別名稱新增至 provider.yaml 中的列表 ‘hook_class_names’。

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

conn_name_attr: str[原始碼]
default_conn_name: str[原始碼]
conn_type: str[原始碼]
hook_name: str[原始碼]
static get_connection_form_widgets()[原始碼]

返回要為 hook (鉤點) 新增的小工具字典,以處理額外的值。

如果您有類別階層,通常您的類別所需的小工具已由基礎類別新增,因此無需實作此方法。如果您嘗試新增基礎類別已新增的小工具,實際上可能會導致日誌中出現警告。

請注意,Dict 的值應為 wtforms.Field 類型。為了匯入效率,此處未新增它。

static get_ui_field_behaviour()[原始碼]

UI 欄位的屬性。

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

如果您在衍生類別中變更 conn_type,您也應實作此方法並返回適用於您的 Hook (鉤點) 的欄位自訂。這是因為子 hook (鉤點) 通常會具有不同的 conn_type,且自訂是針對每個連線類型。

另請參閱

ComputeSSH 作為範例

此條目是否有幫助?