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 方法的非同步等效方法。

此條目是否有幫助?