2016-12-05 53 views
2

我已閱讀gmail api配額解釋(https://developers.google.com/gmail/api/v1/reference/quota),但我仍然無法理解是什麼導致我們超出限制。瞭解Gmail api配額

問題1: 每用戶配額中的用戶數是多少?我不確定用戶是個人gmail用戶還是使用gmail api的服務客戶端。

問題2: 我們幾次看到以下錯誤,但沒有看到任何明顯的限制。

"error": { 
"errors": [ 
    { 
    "domain": "usageLimits", 
    "reason": "rateLimitExceeded", 
    "message": "Rate Limit Exceeded" 
    } 
], 
"code": 429, 
"message": "Rate Limit Exceeded" 
} 

我們低於250個單位/秒和25,000個單位/ 100個。我們只使用history.list和message.get調用不發送或修改。
我缺少一些其他配額嗎?

回答

0
  1. 用戶配額基於您正在訪問的帳戶。所以這將是GMail帳戶。有時你可以通過隨機發送quotaUser來欺騙它,但這並不總是有效。谷歌也會使用你的IP地址來追蹤我懷疑的配額。

  2. 用戶速率限制是您要快速進行的防洪保護。

每每秒每用戶的用戶速率限制250個配額單元,移動 平均(允許短突發)

超過速率限制將導致HTTP 403或HTTP 429太多 請求響應並且您的應用程序應該通過以 指數回退重試。

谷歌計算並不完美,你可能會發送更多或更少的數量,但仍然達到這個配額。只是實施指數退避。

指數回退

用於實現簡單指數退避的流程如下:

  1. 請對API的請求。
  2. 接收HTTP 403速率限制響應,表明您應該重試該請求。
  3. 等待1 + random_number_milliseconds秒並重試請求。
  4. 接收HTTP 403速率限制響應,表明您應該重試該請求。
  5. 等2 + random_number_milliseconds秒,然後重試請求。
  6. 接收HTTP 403速率限制響應,表明您應該重試該請求。
  7. 等4 + random_number_milliseconds秒,然後重試請求。
  8. 接收HTTP 403速率限制響應,表明您應該重試該請求。
  9. 等待8 + random_number_milliseconds秒,然後重試請求。
  10. 接收HTTP 403速率限制響應,表明您應該重試該請求。
  11. 等待16 + random_number_milliseconds秒,然後重試請求。
  12. 停止。報告或記錄錯誤。
0

你的問題1

這裏有不同的配額的意義在Gmail

  • QPD(每天配額) - 超過24意味着請求的最大數小時期客戶編號能夠對API進行編號

  • QPS(配額每秒) - 含義a每秒全球配額的申請,這意味着應用程序可以有多少呼叫第二使

  • 配額每秒每用戶 - 這意味着查詢的用戶數量,應用程序可以做。

對於問題2號

好吧,如果你檢查Gmail的配額在開發者控制檯上,Gmail有一個默認配額:

enter image description here

所以我能建議您使用以下提示,以便有效地使用您的配額:

  • Push notification - 它可以提高應用程序的性能。它允許您消除額外的網絡並計算輪詢資源所涉及的成本,以確定它們是否發生了變化。只要郵箱發生變化,Gmail API就會通知您的後端服務器應用程序。

  • 使用synchronization來檢索和存儲儘可能多的最新消息或線程,以達到您的目的。

  • Batching Requests - 減少客戶端必須建立的HTTP連接數。

如果您發現您達到此限制,你需要比這更多,那麼你可以申請更多的配額here