airflow.providers.google.common.hooks.base_google

此模块包含一个 Google Cloud API 基础 Hook。

属性

log

INVALID_KEYS

INVALID_REASONS

PROVIDE_PROJECT_ID

T

RT

retry_if_temporary_quota

如果因超出临时配额限制而出现异常,则重试。

retry_if_operation_in_progress

如果在操作进行中时出现异常,则重试。

retry_if_temporary_refresh_credentials

如果因刷新凭据时出现异常,则重试。

GoogleBaseHook

Google Cloud 相关 Hook 的基础 Hook。

GoogleBaseAsyncHook

GoogleBaseAsyncHook 继承自 BaseHook 类,并在触发器工作器上运行。

函数

is_soft_quota_exception(exception)

检查配额违规错误。

is_operation_in_progress_exception(exception)

处理操作进行中异常。

is_refresh_credentials_exception(exception)

处理刷新凭据异常。

get_field(extras, field_name)

从 extra 获取字段,首先检查短名称,然后为了向后兼容,检查带前缀的名称。

模块内容

airflow.providers.google.common.hooks.base_google.log[source]
airflow.providers.google.common.hooks.base_google.INVALID_KEYS = ['DefaultRequestsPerMinutePerProject', 'DefaultRequestsPerMinutePerUser',...[source]
airflow.providers.google.common.hooks.base_google.INVALID_REASONS = ['userRateLimitExceeded'][source]
airflow.providers.google.common.hooks.base_google.is_soft_quota_exception(exception)[source]

检查配额违规错误。

Google 服务 API 没有标准化的方式来报告配额违规错误。

此函数已通过反复试验适应以下服务: * Google Translate * Google Vision * Google Text-to-Speech * Google Speech-to-Text * Google Natural Language * Google Video Intelligence

airflow.providers.google.common.hooks.base_google.is_operation_in_progress_exception(exception)[source]

处理操作进行中异常。

在操作进行中时,某些调用会返回 429 (请求过多!) 或 409 错误 (冲突)。

  • Google Cloud SQL

airflow.providers.google.common.hooks.base_google.is_refresh_credentials_exception(exception)[source]

处理刷新凭据异常。

在无法获取新令牌时,某些调用会返回 502 (服务器错误)。

  • Google BigQuery

class airflow.providers.google.common.hooks.base_google.retry_if_temporary_quota[source]

基类: tenacity.retry_if_exception

如果因超出临时配额限制而出现异常,则重试。

class airflow.providers.google.common.hooks.base_google.retry_if_operation_in_progress[source]

基类: tenacity.retry_if_exception

如果在操作进行中时出现异常,则重试。

class airflow.providers.google.common.hooks.base_google.retry_if_temporary_refresh_credentials[source]

基类: tenacity.retry_if_exception

如果因刷新凭据时出现异常,则重试。

airflow.providers.google.common.hooks.base_google.PROVIDE_PROJECT_ID: str = None[source]
airflow.providers.google.common.hooks.base_google.T[source]
airflow.providers.google.common.hooks.base_google.RT[source]
airflow.providers.google.common.hooks.base_google.get_field(extras, field_name)[source]

从 extra 获取字段,首先检查短名称,然后为了向后兼容,检查带前缀的名称。

class airflow.providers.google.common.hooks.base_google.GoogleBaseHook(gcp_conn_id='google_cloud_default', impersonation_chain=None, **kwargs)[source]

基类: airflow.hooks.base.BaseHook

Google Cloud 相关 Hook 的基础 Hook。

Google Cloud 有一个共享的 REST API 客户端,无论您使用哪种服务,构建方式都相同。此类帮助构建和授权所需的凭据,以便随后调用 googleapiclient.discovery.build() 实际发现并构建 Google Cloud 服务的客户端。

该类还包含一些杂项辅助函数。

所有派生自此基础 Hook 的 Hook 都使用“Google Cloud”连接类型。支持三种认证方式

默认凭据:仅需要“项目 ID”。您需要设置默认凭据,例如通过 GOOGLE_APPLICATION_DEFAULT 环境变量或 Google Compute Engine 上的元数据服务器。

JSON 密钥文件:指定“项目 ID”、“密钥文件路径”和“范围”。

不支持旧版 P12 密钥文件。

UI 中提供的 JSON 数据:指定“Keyfile JSON”。

参数:
  • gcp_conn_id (str) – 获取连接信息时使用的连接 ID。

  • impersonation_chain (str | collections.abc.Sequence[str] | None) – 可选的服务账号,用于使用短期凭据进行模拟,或获取列表中最后一个账号(将在请求中模拟)的 access_token 所需的账号链式列表。如果设置为字符串,该账号必须授予发起账号 Service Account Token Creator IAM 角色。如果设置为序列,列表中的身份必须授予紧前身份 Service Account Token Creator IAM 角色,列表中第一个账号将此角色授予发起账号。

conn_name_attr = 'gcp_conn_id'[source]
default_conn_name = 'google_cloud_default'[source]
conn_type = 'google_cloud_platform'[source]
hook_name = 'Google Cloud'[source]
classmethod get_connection_form_widgets()[source]

返回添加到连接表单的连接小部件。

classmethod get_ui_field_behaviour()[source]

返回自定义字段行为。

gcp_conn_id = 'google_cloud_default'[source]
impersonation_chain = None[source]
extras: dict[source]
get_credentials_and_project_id()[source]

返回 Google API 的 Credentials 对象和关联的 project_id。

get_credentials()[source]

返回 Google API 的 Credentials 对象。

property project_id: str[source]

返回项目 ID。

返回:

项目的 ID

返回类型:

str

property num_retries: int[source]

从 Connection 返回 num_retries。

返回:

每个 API 请求应重试的次数

返回类型:

int

property scopes: collections.abc.Sequence[str][source]

返回 OAuth 2.0 范围。

返回:

返回连接配置中定义的范围或默认范围

返回类型:

collections.abc.Sequence[str]

static quota_retry(*args, **kwargs)[source]

提供一种机制,用于在超出临时配额限制时重复请求。

static operation_in_progress_retry(*args, **kwargs)[source]

提供一种机制,用于在操作进行中 (HTTP 409) 限制时重复请求。

static refresh_credentials_retry(*args, **kwargs)[source]

提供一种机制,用于在临时刷新凭据问题时重复请求。

static fallback_to_default_project_id(func)[source]

为 Google Cloud 项目 ID 提供回退。用作装饰器。

如果项目为 None,则将其替换为 Hook 认证所使用的服务账号的项目 ID。项目 ID 可以通过 project_id kwarg 或位置参数中的第一个参数指定。

参数:

func (Callable[Ellipsis, RT]) – 要包装的函数

返回:

函数调用的结果

返回类型:

Callable[Ellipsis, RT]

static provide_gcp_credential_file(func)[source]

为应用默认凭据 (ADC) 策略支持提供 Google Cloud 凭据。

建议使用 provide_gcp_credential_file_as_context 上下文管理器来限制授权数据可用时的范围。使用上下文管理器也更容易在一个函数中使用多个连接。

provide_gcp_credential_file_as_context()[source]

为应用默认凭据 (ADC) 策略支持提供 Google Cloud 凭据。

参阅

应用默认凭据 (ADC) 策略.

它可用于为需要 GOOGLE_APPLICATION_CREDENTIALS 环境变量中授权文件的外部程序(例如 gcloud)提供凭据。

provide_authorized_gcloud()[source]

提供一个带有当前凭据的独立 gcloud 配置。

gcloud 工具只允许您登录 Google Cloud - gcloud auth login,以及用于应用默认凭据的 gcloud auth application-default login。在我们的例子中,我们希望所有命令都只使用 ADCm 的凭据,因此我们需要手动在 gcloud 中配置凭据。

static download_content_from_request(file_handle, request, chunk_size)[source]

下载媒体资源。

请注意,Python 文件对象与 io.Base 兼容,也可用于此类。

参数:
  • file_handle – io.Base 或文件对象。用于写入下载字节的流。

  • request (dict) – googleapiclient.http.HttpRequest,要分块执行的媒体请求。

  • chunk_size (int) – int,文件将按此字节数分块下载。

test_connection()[source]

从 UI 测试 Google Cloud 连接。

class airflow.providers.google.common.hooks.base_google.GoogleBaseAsyncHook(**kwargs)[source]

基类: airflow.hooks.base.BaseHook

GoogleBaseAsyncHook 继承自 BaseHook 类,并在触发器工作器上运行。

sync_hook_class: Any = None[source]
async get_sync_hook()[source]

Google Cloud Hook 的同步版本在 __init__ 中进行阻塞调用;请勿继承它。

async get_token(*, session=None)[source]

返回一个 Token 实例,供 [gcloud-aio](https://talkiq.github.io/gcloud-aio/) 客户端使用。

async service_file_as_context()[source]

为应用默认凭据 (ADC) 策略支持提供 Google Cloud 凭据。

这是非异步 GoogleBaseHook 的 provide_gcp_credential_file_as_context 方法的异步等效方法。

此条目是否有帮助?