簡體   English   中英

Google Analytics(分析)實時 API 提高了 Cloud Functions 上超出的速率限制

[英]Google Analytics realtime API raises Rate Limit Exceeded on Cloud Functions

我正在使用google-api-python-client創建一個 Cloud Function,它每分鍾向 Google Analytics Realtime API 發出一個請求。 它運行了很長時間。

這是使用的代碼:

from googleapiclient.discovery import build
service = build('analytics', 'v3', credentials=credentials)

service.data().realtime().get(
  ids=f'ga:{view_id}',
  metrics='rt:pageviews',
  dimensions='rt:deviceCategory,rt:minutesAgo',
  quotaUser='my-function'
).execute(num_retries=3)

今天從 UTC-3 上午 10 點開始,我遇到了這個錯誤:

配額錯誤:最近失敗的報告 API 請求數太高,請實施指數回退。

根據文檔,限制是:

  • 每個項目每天 50,000 個請求,可以增加。
  • 每個 IP 地址每秒 10 次查詢 (QPS)

開發者控制台中,Google Analytics API 指標在過去 7 天內有 25k 次請求,平均 0.05/s,錯誤開始時的峰值 0.20/s。

這些功能部署在us-east1中。 我在us-east4中部署了其他實例並且運行良好。 所以我認為限制是在us-east1中使用的 IP 地址,與其他用戶共享。

有辦法隔離我的項目的配額嗎? 我嘗試了quotaUser參數,但似乎沒有效果。

更新:區域us-east4開始引發相同的錯誤,所以我切換到us-central1 ,它現在工作正常。

UTC 時間 12 月 23 日 16:00 更新:問題又回來了。 API 請求再次返回相同的錯誤。


UTC 時間 12 月 22 日 18:56 更新:從 1 小時前開始,報告 API 開始再次響應查詢。 大約 15 分鍾前,實時 API 也再次響應。 在他們開始工作之前,這些調用不再返回錯誤,而是請求繼續“永遠”加載。


從 6 小時前開始,我在直接從我自己的服務器(在柏林)使用 Google Analytics API 時隨機遇到了同樣的問題。 我已經嘗試了以下方法來解決這個問題:

  • 禁用所有 API 呼叫一小時(無效)
  • 再次認證; 新的 access_token 和 refresh_token(沒用)

為什么我高度懷疑這是谷歌分析方面的問題(你/我無法真正解決這個問題):

  • 我的代碼在 18:00 左右(當地時間 - 現在 6 小時前)隨機停止工作,該代碼已經運行了至少 4 年。
  • 獲取新的訪問令牌有效,使用它們無效(即時速率限制)
  • 我檢查了 Google Developer Console 頁面配額錯誤圖,顯示了 0 個錯誤(...)
  • 在同一個控制台中,您可以看到為您的項目配置的配額:每個用戶每 100 秒最多有 2.000 個請求。 我檢查了我的歷史數據,我每天只運行約 1.500 個請求。
  • 我得到的錯誤是:HTTP 403,原因為“rateLimitExceeded”。 根據該文檔:“表明已超過每 100 秒的項目查詢速率限制。” 資料來源: https://developers.google.com/analytics/devguides/reporting/core/v3/errors
  • 當我在 Google API Explorer 工具中運行完全相同的查詢時,我得到了預期的 HTTP 200 響應。 例如: https://developers.google.com/analytics/devguides/reporting/realtime/v3/reference/data/realtime/get

我從谷歌分析 API 得到的確切錯誤:

"error": {
    "code": 403,
    "message": "Quota Error: Number of recent failed reporting API requests is too high, please implement exponential back off.\nSee developer documentation for details at https://developers.google.com/analytics/devguides/reporting/core/v4/limits-quotas#reporting_apis_request_errors",
    "errors": [
      {
        "message": "Quota Error: Number of recent failed reporting API requests is too high, please implement exponential back off.\nSee developer documentation for details at https://developers.google.com/analytics/devguides/reporting/core/v4/limits-quotas#reporting_apis_request_errors",
        "domain": "usageLimits",
        "reason": "rateLimitExceeded"
      }
    ]
  }

我們經歷了同樣的事情,它似乎時不時地出現和解決,而沒有來自 Google Analytics 的任何信號或跡象。 它從 12 月 21 日開始。 我們嘗試減少呼叫量(每分鍾一次減少一分鍾),但這似乎無濟於事。

我們使用的是實時 API 的 v3,但我們確實在錯誤日志中看到了對 V4-api 的一些引用:

https://developers.google.com/analytics/devguides/reporting/core/v4/limits-quotas#reporting_apis_request_errors

也許這可以幫助您找到原因。

我也有同樣的問題。 我認為主要原因是谷歌服務器端更多的請求超時(嘗試使用 5-10 個請求的API 資源管理器)。 所有超時的請求都算作FAILED,然后你得到: Quota Error: Number of recent failed reporting API requests is too high, please implement exponential back off...

我保存了一些日志,我看到了一些奇怪的事情:大多數“超時請求”在 144 秒、240 秒或 480 秒后仍然收到響應。 我仍然不知道這些神奇的數字是什么,但它看起來像一個模式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM