管理配額

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

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

Google Calendar API 用量配額類型

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

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

配額是使用滑動視窗每分鐘計算一次,因此如果流量在某分鐘內快速爆增,導致超過每分鐘配額,系統會在下一個視窗期間進行速率限制,確保平均用量維持在配額內。

如果超出任一配額,系統就會限制查詢頻率,並傳回 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 不需額外付費。超出配額要求限制不會產生額外費用,也不會向您的帳戶收費。