管理配額

Google 日曆 API 設有配額,確保所有使用者都能公平使用。使用 Calendar API 時,請留意以下三個重要限制:

  • API 使用量配額會針對每個專案和使用者強制執行。詳情請參閱下一節。
  • 一般 Google 日曆使用上限:避免超出 Google 日曆使用上限
  • 操作限制:系統隨時可能會對您施加費率限制。舉例來說,如果您嘗試快速連續寫入單一日曆。

日曆 API 用量配額類型

系統會強制執行兩種配額:

  • 每項專案每分鐘:這是 Google Cloud 專案提出的要求數量。
  • 每位使用者每個專案每分鐘:這是 Cloud 專案中任何一位特定使用者提出的要求數量。這項限制旨在協助您確保使用者能公平分配使用量。

系統會使用滑動視窗計算每分鐘配額,因此如果在 1 分鐘內出現大量流量,導致每分鐘配額超出,系統會在下一個視窗期間實施頻率限制,確保平均用量維持在配額範圍內。

如果超出任一配額,系統就會對您的查詢進行頻率限制,並傳回 403 usageLimits 狀態碼429 usageLimits 狀態碼。發生這種情況時,請採取下列行動:

  1. 請務必遵循所有最佳做法:使用指數輪詢隨機化流量模式使用推播通知
  2. 如果您的專案正在成長,且有更多使用者,您可以申請提高個別專案的配額
  3. 如果達到每位使用者配額上限,您可以採取以下做法:
    • 如果您使用服務帳戶,請將負載分配給使用者,或將負載分散到多個服務帳戶。
    • 雖然您可以要求提高每位使用者的配額,但一般來說,我們不建議將配額調高至超過預設值,因為應用程式可能會開始觸及其他類型的限制,例如一般日曆使用限制或作業限制。

要求提高配額

如要查看或變更專案的用量限制,或是想申請更多配額,請進行以下步驟:

  1. 確認您的專案已設有帳單帳戶。如果沒有,請先建立一個。
  2. 開啟 API 控制台並前往 API 程式庫「已啟用的 API」頁面,從清單中選取 API。
  3. 如要查看及變更配額相關設定,請點選「配額」。如要查看用量統計資料,請點選「用量」

使用指數輪詢

當我們希望您放慢要求頻率時,我們會傳回 403「usageLimits」回應或 429 回應 (請參閱完整錯誤說明文件)。這不是致命錯誤,我們建議您在短暫間隔後重試要求。如果要求仍以過快的速度湧入,我們會再次要求,以此類推。為了讓這項功能正常運作,請務必讓要求之間的延遲時間隨著時間增加。

一般而言,您應使用截斷指數回退Cloud Storage 說明文件詳細說明這項功能的運作方式和偏好的演算法。如果您使用 Google 用戶端程式庫,系統通常會為您處理這項工作;請參閱程式庫說明文件。通常,您應使用程式庫實作項目,而非自行編寫。

隨機產生流量模式

日曆用戶端容易出現尖峰流量模式,這是因為多個用戶端同時執行作業所致。舉例來說,日曆用戶端常見的錯誤做法是在午夜執行完整同步作業。這幾乎肯定會導致每分鐘配額超出,並導致速率限制和回退。

為避免這種情況,請盡可能將流量分散在整個白天。如果客戶需要每天進行同步作業,請由客戶決定隨機時間 (每位客戶的時間不同)。如果需要定期執行作業,請將間隔時間調整為 +/- 25%。這樣一來,流量分配會更平均,使用者體驗也會大幅提升。

使用推播通知

常見的用途是,在使用者日曆發生變更時執行某項動作。這裡的反模式是重複輪詢每個感興趣的月曆。這會很快用盡您的所有配額。舉例來說,如果您的應用程式有 5,000 位使用者,且每分鐘輪詢每位使用者的日曆一次,那麼即使在任何工作完成之前,每分鐘配額就需要至少 5,000 個。

伺服器端應用程式可以註冊推播通知,讓我們在發生有興趣的事件時通知您。這些設定需要更多工作,但可讓您更有效率地使用配額,並提供更優質的使用者體驗。請務必指定要接收通知的 eventType。詳情請參閱「推播通知」。

使用服務帳戶進行正確的會計作業

如果應用程式使用全網域委派功能執行要求,系統預設會針對「每位使用者每分鐘每個專案」配額向服務帳戶收費,而非您要冒用身分的使用者。也就是說,即使服務帳戶可能會在多位使用者的日曆上運作,但仍可能會耗盡配額並受到速率限制。如要避免這種情況,請使用 quotaUser 網址參數 (或 x-goog-quota-user HTTP 標頭) 指出要向哪位使用者收費。這項屬性僅用於配額計算。詳情請參閱 Cloud 說明文件中的「限制每位使用者的要求數量」一節。

測試配額限制處理

為確保應用程式實際上能妥善處理達到配額限制的情況 (例如透過指數輪詢重試),並盡可能減少對使用者的任何潛在干擾,我們強烈建議您在實際環境中測試此情境。

為避免這類測試干擾實際應用程式使用情形,建議您在 Google API 控制台中註冊專屬測試專案,並設定與實際專案類似的測試專案。接著,您可以為這個專案設定人為的低配額,並觀察應用程式的行為。

定價

您可以免費使用 Google Calendar API。超出配額要求上限不會產生額外費用,也不會向您的帳戶收費。