Google 日曆 API 設有配額,確保所有使用者都能公平使用。使用 Calendar API 時,請留意以下三個重要限制:
- API 使用量配額會針對每個專案和使用者強制執行。詳情請參閱下一節。
- 一般 Google 日曆使用上限:避免超出 Google 日曆使用上限。
- 操作限制:系統隨時可能會對您施加費率限制。舉例來說,如果您嘗試快速連續寫入單一日曆。
日曆 API 用量配額類型
系統會強制執行兩種配額:
- 每項專案每分鐘:這是 Google Cloud 專案提出的要求數量。
- 每位使用者每個專案每分鐘:這是 Cloud 專案中任何一位特定使用者提出的要求數量。這項限制旨在協助您確保使用者能公平分配使用量。
系統會使用滑動視窗計算每分鐘配額,因此如果在 1 分鐘內出現大量流量,導致每分鐘配額超出,系統會在下一個視窗期間實施頻率限制,確保平均用量維持在配額範圍內。
如果超出任一配額,系統就會對您的查詢進行頻率限制,並傳回 403 usageLimits
狀態碼或 429 usageLimits
狀態碼。發生這種情況時,請採取下列行動:
要求提高配額
如要查看或變更專案的用量限制,或是想申請更多配額,請進行以下步驟:
- 確認您的專案已設有帳單帳戶。如果沒有,請先建立一個。
- 開啟 API 控制台並前往 API 程式庫「已啟用的 API」頁面,從清單中選取 API。
- 如要查看及變更配額相關設定,請點選「配額」。如要查看用量統計資料,請點選「用量」。
使用指數輪詢
當我們希望您放慢要求頻率時,我們會傳回 403「usageLimits」回應或 429 回應 (請參閱完整錯誤說明文件)。這不是致命錯誤,我們建議您在短暫間隔後重試要求。如果要求仍以過快的速度湧入,我們會再次要求,以此類推。為了讓這項功能正常運作,請務必讓要求之間的延遲時間隨著時間增加。
一般而言,您應使用截斷指數回退;Cloud Storage 說明文件詳細說明這項功能的運作方式和偏好的演算法。如果您使用 Google 用戶端程式庫,系統通常會為您處理這項工作;請參閱程式庫說明文件。通常,您應使用程式庫實作項目,而非自行編寫。
隨機產生流量模式
日曆用戶端容易出現尖峰流量模式,這是因為多個用戶端同時執行作業所致。舉例來說,日曆用戶端常見的錯誤做法是在午夜執行完整同步作業。這幾乎肯定會導致每分鐘配額超出,並導致速率限制和回退。
為避免這種情況,請盡可能將流量分散在整個白天。如果客戶需要每天進行同步作業,請由客戶決定隨機時間 (每位客戶的時間不同)。如果需要定期執行作業,請將間隔時間調整為 +/- 25%。這樣一來,流量分配會更平均,使用者體驗也會大幅提升。
使用推播通知
常見的用途是,在使用者日曆發生變更時執行某項動作。這裡的反模式是重複輪詢每個感興趣的月曆。這會很快用盡您的所有配額。舉例來說,如果您的應用程式有 5,000 位使用者,且每分鐘輪詢每位使用者的日曆一次,那麼即使在任何工作完成之前,每分鐘配額就需要至少 5,000 個。
伺服器端應用程式可以註冊推播通知,讓我們在發生有興趣的事件時通知您。這些設定需要更多工作,但可讓您更有效率地使用配額,並提供更優質的使用者體驗。請務必指定要接收通知的 eventType
。詳情請參閱「推播通知」。
使用服務帳戶進行正確的會計作業
如果應用程式使用全網域委派功能執行要求,系統預設會針對「每位使用者每分鐘每個專案」配額向服務帳戶收費,而非您要冒用身分的使用者。也就是說,即使服務帳戶可能會在多位使用者的日曆上運作,但仍可能會耗盡配額並受到速率限制。如要避免這種情況,請使用 quotaUser
網址參數 (或 x-goog-quota-user
HTTP 標頭) 指出要向哪位使用者收費。這項屬性僅用於配額計算。詳情請參閱 Cloud 說明文件中的「限制每位使用者的要求數量」一節。
測試配額限制處理
為確保應用程式實際上能妥善處理達到配額限制的情況 (例如透過指數輪詢重試),並盡可能減少對使用者的任何潛在干擾,我們強烈建議您在實際環境中測試此情境。
為避免這類測試干擾實際應用程式使用情形,建議您在 Google API 控制台中註冊專屬測試專案,並設定與實際專案類似的測試專案。接著,您可以為這個專案設定人為的低配額,並觀察應用程式的行為。
定價
您可以免費使用 Google Calendar API。超出配額要求上限不會產生額外費用,也不會向您的帳戶收費。