airflow.providers.google.common.hooks.base_google

此模組包含 Google Cloud API 基礎 Hook。

模組內容

類別

retry_if_temporary_quota

如果發生超出暫時配額限制的例外狀況,則重試。

retry_if_operation_in_progress

如果操作正在進行中而發生例外狀況,則重試。

retry_if_temporary_refresh_credentials

如果發生重新整理憑證的例外狀況,則重試。

GoogleBaseHook

Google 雲端相關 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 取得欄位,首先檢查簡短名稱,然後為了回溯相容性,我們檢查帶有前綴的名稱。

屬性

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 Natural Language * Google Video Intelligence

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 雲端相關 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 資料:指定「金鑰檔案 JSON」。

參數
  • gcp_conn_id (str) – 擷取連線資訊時要使用的連線 ID。

  • impersonation_chain (str | collections.abc.Sequence[str] | None) – 選擇性服務帳戶,用於模擬使用短期憑證,或用於取得清單中最後一個帳戶的 access_token 所需的鏈結帳戶清單,該帳戶將在請求中模擬。如果設定為字串,則帳戶必須授予原始帳戶服務帳戶權杖建立者 IAM 角色。如果設定為序列,則清單中的身分必須授予直接前一個身分服務帳戶權杖建立者 IAM 角色,清單中的第一個帳戶將此角色授予原始帳戶。

property project_id: str[原始碼]

傳回專案 ID。

傳回

專案的 ID

傳回類型

str

property num_retries: int[原始碼]

從連線傳回 num_retries。

傳回

每個 API 請求應重試的次數

傳回類型

int

property client_info: google.api_core.gapic_v1.client_info.ClientInfo[原始碼]

傳回用戶端資訊,用於產生 API 呼叫的使用者代理程式。

它可提供更佳的錯誤追蹤。

此物件僅供專為 Google Cloud 建置的 google-cloud-* 程式庫使用。使用探索型 API 的 Google APIs Python Client 不支援此物件。

property scopes: collections.abc.Sequence[str][原始碼]

傳回 OAuth 2.0 範圍。

傳回

傳回連線設定中定義的範圍,或預設範圍

傳回類型

collections.abc.Sequence[str]

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

傳回要新增至連線表單的連線小工具。

classmethod get_ui_field_behaviour()[原始碼]

傳回自訂欄位行為。

get_credentials_and_project_id()[原始碼]

傳回 Google API 的憑證物件和相關聯的 project_id。

get_credentials()[原始碼]

傳回 Google API 的憑證物件。

static quota_retry(*args, **kwargs)[原始碼]

提供一種機制來重複請求,以回應超出暫時配額限制的情況。

static operation_in_progress_retry(*args, **kwargs)[原始碼]

提供一種機制來重複請求,以回應操作正在進行中(HTTP 409)限制的情況。

static refresh_credentials_retry(*args, **kwargs)[原始碼]

提供一種機制來重複請求,以回應暫時的重新整理憑證問題。

static fallback_to_default_project_id(func)[原始碼]

為 Google Cloud 專案 ID 提供後備方案。用作裝飾器。

如果專案為 None,則會將其替換為 Hook 驗證身分所用服務帳戶的 project_id。專案 ID 可以透過 project_id kwarg 或透過位置引數中的第一個參數指定。

參數

func (Callable[Ellipsis, RT]) – 要包裝的函數

傳回

函數呼叫的結果

傳回類型

Callable[Ellipsis, RT]

static provide_gcp_credential_file(func)[原始碼]

為應用程式預設憑證 (ADC) 策略支援提供 Google Cloud 憑證。

建議使用 provide_gcp_credential_file_as_context 內容管理器來限制授權資料可用時的範圍。使用內容管理器也讓在一個函數中使用多個連線變得更容易。

provide_gcp_credential_file_as_context()[原始碼]

為應用程式預設憑證 (ADC) 策略支援提供 Google Cloud 憑證。

請參閱

應用程式預設憑證 (ADC) 策略.

它可用於為外部程式(例如 gcloud)提供憑證,這些程式預期 GOOGLE_APPLICATION_CREDENTIALS 環境變數中有授權檔案。

provide_authorized_gcloud()[原始碼]

使用目前的憑證提供個別的 gcloud 設定。

gcloud 工具僅允許您登入 Google Cloud - gcloud auth login 和應用程式預設憑證的需求 gcloud auth application-default login。在我們的案例中,我們希望所有命令僅使用 ADCm 中的憑證,因此我們需要手動在 gcloud 中設定憑證。

static download_content_from_request(file_handle, request, chunk_size)[原始碼]

下載媒體資源。

請注意,Python 檔案物件與 io.Base 相容,也可以與此類別搭配使用。

參數
  • file_handle – io.Base 或檔案物件。要在其中寫入下載位元組的串流。

  • request (dict) – googleapiclient.http.HttpRequest,要以區塊執行的媒體請求。

  • chunk_size (int) – int,檔案將以這麼多位元組的區塊下載。

test_connection()[原始碼]

從 UI 測試 Google 雲端連線能力。

class airflow.providers.google.common.hooks.base_google.GoogleBaseAsyncHook(**kwargs)[原始碼]

基底: airflow.hooks.base.BaseHook

GoogleBaseAsyncHook 繼承自 BaseHook 類別,在觸發器工作程序上執行。

sync_hook_class: Any[原始碼]
async get_sync_hook()[原始碼]

Google Cloud Hook 的同步版本會在 __init__ 中進行封鎖呼叫;不要繼承它。

async get_token(*, session=None)[原始碼]

傳回 Token 執行個體,以用於 [gcloud-aio](https://talkiq.github.io/gcloud-aio/) 用戶端。

async service_file_as_context()[原始碼]

為應用程式預設憑證 (ADC) 策略支援提供 Google Cloud 憑證。

這是非同步 GoogleBaseHook 的 provide_gcp_credential_file_as_context 方法的非同步對等方法。

此條目是否有幫助?