airflow.hooks.base¶
所有钩子的基类。
属性¶
类¶
钩子的抽象基类。 |
|
提供者可以实现的接口,以便被 ProvidersManager 发现。 |
模块内容¶
- 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 作为记录器)。
- 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 中看到一些示例。