airflow.providers.google.common.hooks.base_google

此模块包含 Google Cloud API 基本钩子。

模块内容

retry_if_temporary_quota

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

retry_if_operation_in_progress

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

retry_if_temporary_refresh_credentials

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

GoogleBaseHook

Google 云相关钩子的基本钩子。

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 获取字段,首先检查短名称,然后为了向后兼容,检查带前缀的名称。

属性

log

INVALID_KEYS

INVALID_REASONS

PROVIDE_PROJECT_ID

T

RT

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

检查配额违规错误。

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

该函数通过反复试验来适应以下服务:* Google 翻译 * Google Vision * Google 文本到语音 * Google 语音到文本 * Google 自然语言 * Google 视频智能

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

处理操作进行中的异常。

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

  • Google Cloud SQL

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

处理刷新凭据异常。

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

  • Google BigQuery

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

基类:tenacity.retry_if_exception

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

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

基类:tenacity.retry_if_exception

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

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

基类:tenacity.retry_if_exception

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

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

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

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

基类:airflow.hooks.base.BaseHook

Google 云相关钩子的基本钩子。

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

该类还包含一些其他辅助函数。

所有由此基本钩子派生的钩子都使用“Google Cloud”连接类型。支持三种身份验证方式

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

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

不支持旧版 P12 密钥文件。

UI 中提供的 JSON 数据:指定“密钥文件 JSON”。

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

  • impersonation_chain ( str | collections.abc.Sequence[str] | None) – 可选的服务帐户,用于使用短期凭据模拟,或用于获取列表中最后一个帐户的 access_token 的帐户链表,该帐户将在请求中被模拟。如果设置为字符串,则该帐户必须授予原始帐户“服务帐户令牌创建者”IAM 角色。如果设置为序列,则列表中的标识必须将“服务帐户令牌创建者”IAM 角色授予直接前一个标识,列表中的第一个帐户将此角色授予原始帐户。

property project_id: str[source]

返回项目 ID。

返回

项目 ID

返回类型

str

property num_retries: int[source]

从连接返回 num_retries。

返回

每个 API 请求应重试的次数

返回类型

int

property client_info: google.api_core.gapic_v1.client_info.ClientInfo[source]

返回用于为 API 调用生成用户代理的客户端信息。

它可以更好地跟踪错误。

此对象仅由专门为 Google Cloud 构建的 google-cloud-* 库使用。使用基于 Discovery 的 API 的 Google APIs Python Client 不支持它。

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

返回 OAuth 2.0 作用域。

返回

返回连接配置中定义的作用域,或默认作用域

返回类型

collections.abc.Sequence[str]

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]

返回自定义字段行为。

get_credentials_and_project_id()[source]

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

get_credentials()[source]

返回 Google API 的 Credentials 对象。

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 验证的服务帐户中的 project_id。可以通过 project_id kwarg 或位置 args 中的第一个参数来指定项目 ID。

参数

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) 策略.

它可以用于为外部程序(例如,gcloud)提供凭据,这些程序期望在 GOOGLE_APPLICATION_CREDENTIALS 环境变量中找到授权文件。

provide_authorized_gcloud()[source]

使用当前凭据提供单独的 gcloud 配置。

gcloud 工具只允许您登录 Google Cloud - gcloud auth login,为了满足应用程序默认凭据的需求,需要执行 gcloud auth application-default login。 在我们的场景中,我们希望所有命令都只使用来自 ADC 的凭据,因此我们需要在 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 云连接。

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

基类:airflow.hooks.base.BaseHook

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

sync_hook_class: Any[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 方法的异步等效方法。

此条目是否有帮助?