airflow.hooks.base

所有 hook 的基类。

模块内容

BaseHook

hook 的抽象基类。

DiscoverableHook

提供程序 *可以* 实现的接口,以便被 ProvidersManager 发现。

属性

log

airflow.hooks.base.log[源代码]
class airflow.hooks.base.BaseHook(logger_name=None)[源代码]

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

hook 的抽象基类。

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 发现。

它不被任何 Hook 使用,但此处描述的简单方法和类字段由这些 Hook 实现。每个方法都是可选的 - 只需实现您需要的方法。

conn_name_attr、default_conn_name、conn_type 应由那些希望在调用具有 connection_type 的 get_hook 方法时自动从 connection_type -> Hook 映射的 Hook 实现。

此外,当您希望 hook 在 UI 选择名称中具有自定义名称时,应设置 hook_name。如果未指定,将使用 conn_name。

“get_ui_field_behaviour” 和 “get_connection_form_widgets” 是可选的 - 如果您想自定义连接表单屏幕,请覆盖它们。您可以通过 get_connection_form_widgets 方法添加额外的 widget 来解析您的额外字段,并通过 get_ui_field_behaviour 方法隐藏或重新标记字段或使用占位符预填充它们。

请注意,“get_ui_field_behaviour” 和 “get_connection_form_widgets” 需要由类层次结构中的每个类设置,以便应用 widget 自定义。

例如,即使您想使用父类的字段,您也必须在 *您的* 类上显式地拥有一个方法

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

您还需要在提供程序的内部 provider.yaml 中将 Hook 类名添加到列表 ‘hook_class_names’ 中,或者在您准备的包中的 provider_info 入口点返回的字典中返回它。

您可以在 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 添加的 widget 字典,以处理额外的值。

如果您有类层次结构,通常您的类需要的 widget 已经由基类添加,因此无需实现此方法。如果您尝试添加已经由基类添加的 widget,实际上可能会导致日志中出现警告。

请注意,Dict 的值应为 wtforms.Field 类型。为了提高导入效率,此处未添加它。

static get_ui_field_behaviour()[source]

UI 字段的属性。

返回一个字典,描述在 javascript 中处理连接表单时要实现的自定义项。应该符合 airflow/customized_form_field_behaviours.schema.json'

如果在派生类中更改了 conn_type,你也应该实现此方法并返回适用于你的 Hook 的字段自定义项。这是因为子 Hook 通常会有不同的 conn_type,并且自定义项是按连接类型进行的。

另请参阅

ComputeSSH 作为示例

此条目是否有帮助?