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 作为示例

本条目是否对您有帮助?