airflow.hooks.base
¶
所有 hook 的基类。
模块内容¶
类¶
hook 的抽象基类。 |
|
提供程序 *可以* 实现的接口,以便被 ProvidersManager 发现。 |
属性¶
- 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
- 返回
连接数组
- 返回类型
- 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 中看到一些示例。