Google Drive API 是一項共用服務,因此設有配額與限制,以確保所有使用者都能公平使用此服務,並維護 Google Workspace 系統的整體效能。
傳送至通知管道時指定地址的通知不會計入配額限制。不過,對 changes.watch
、channels.stop
和 files.watch
方法的呼叫會計入配額。
如果超出配額,您會收到 403: User rate limit
exceeded
HTTP 狀態碼回應。針對雲端硬碟後端進行的其他頻率限制檢查也可能會產生 429: Too many
requests
回應。在這種情況下,您應使用指數輪詢演算法,並稍後再試一次。只要不超過下方的每分鐘配額,您每日可發出的要求數量沒有限制。
下表詳細說明查詢限制:
配額 | |||||
---|---|---|---|---|---|
查詢 |
|
解決以時間為準的配額錯誤
如果是以時間為準的錯誤 (每 X 分鐘最多 N 個要求),我們建議您讓程式碼擷取例外狀況,並使用經過截斷的指數輪詢,確保裝置不會產生過多負載。
指數輪詢是網路應用程式的標準錯誤處理策略。指數輪詢演算法會以指數方式逐漸增加要求之間的等待時間來重試要求,最多可達輪詢時間上限。如果要求還是失敗,則要求之間的延遲時間會隨著時間增加,直到要求成功為止。
演算法範例
指數輪詢演算法會以指數方式重試要求,並將每次重試之間的等待時間增加到最長輪詢時間。例如:
- 向 Google Drive API 提出要求。
- 如果要求失敗,請等待 1 +
random_number_milliseconds
,然後重試要求。 - 如果要求失敗,請等待 2 +
random_number_milliseconds
,然後重試要求。 - 如果要求失敗,請等待 4 +
random_number_milliseconds
,然後重試要求。 - 依此類推,時間上限為
maximum_backoff
。 - 繼續等待和重試,直到重試次數上限,但不要增加每次重試的等待時間。
其中:
- 等待時間為
min(((2^n)+random_number_milliseconds), maximum_backoff)
,每次疊代 (要求) 時,n
會增加 1。 random_number_milliseconds
是小於或等於 1,000 的隨機毫秒數。這有助於避免多個用戶端在特定情況下同步處理並同時重試,避免在同步的 Wave 中傳送要求。random_number_milliseconds
的值會在每次重試要求後重新計算。maximum_backoff
通常是 32 或 64 秒,適當的值會因用途而異。
用戶端可以在達到 maximum_backoff
時間後繼續重試。之後重試時就不必繼續增加輪詢時間。舉例來說,如果用戶端使用的 maximum_backoff
時間為 64 秒,則達到這個值之後,用戶端可以每 64 秒重試一次。在某些情況下,用戶端應禁止無限期重試。
重試的等待時間和重試次數須視用途和網路狀況而定。
定價
不必額外付費即可使用 Google Drive API。超過配額要求限制時,您不會產生額外費用,系統也不會向您的帳戶收費。
申請提高配額
視專案的資源用量而定,您可能會想要申請提高配額。服務帳戶的 API 呼叫將視為使用單一帳戶。我們不保證一定能核准您提出的配額增加要求。大量增加配額的要求可能需要較長時間才能通過核准。
並非所有專案的配額都相同。隨著 Google Cloud 的使用時間逐漸增加,配額可能也必須提高。如果您預期用量將大幅攀升,可以透過 Google Cloud 控制台的「配額」頁面主動要求調整配額。
詳情請參閱下列資源: