使用限制

Google Play EMM API 的預設上限為每個 EMM 每秒 60,000 次查詢。

如果超出配額,Google Play EMM API 會傳回 HTTP 429 Too Many Requests。為確保您不會超過規定的使用限制,並為使用者提供最佳體驗,建議您採用下文所述的部分最佳做法。

建議您如何避免超過 API 用量限制

使用 Google Play EMM API 時,您可以採行一些最佳做法來發布要求,降低超過用量限制的風險。

隨機產生開始時間和間隔

如果同時進行同步或簽到等活動,要求量可能會大幅增加。您可以隨機化這些間隔,以便分散要求負載,而非依照定期排程間隔執行這些活動。舉例來說,您可以在 23 到 25 小時之間隨機選定的時間範圍內同步處理每部裝置,而不必每 24 小時一次同步處理一次。這有助於分散請求數量。

同樣地,如果您執行的每日工作會快速連續發出多次 API 呼叫,請考慮每天隨機啟動工作,避免同時對所有企業客戶提出大量要求。

使用指數輪詢重試要求

如果您執行的工作是由多個 API 呼叫組成,請採用指數輪詢策略來回應配額上限。指數輪詢是一種演算法,會以指數方式重試要求。實作簡單指數輪詢的流程範例如下:

  1. 向 Google Play EMM API 提出要求。
  2. 接收 HTTP 429 回應。
  3. 等待 2 秒又 random_time,然後重試要求。
  4. 收到 HTTP 429 回應。
  5. 等待 4 秒 + random_time,然後重試要求。
  6. 接收 HTTP 429 回應。
  7. 等待 8 秒鐘 + random_time,然後重試要求。

random_time 通常是介於 -0.5 * 等待時間+0.5 * 等待時間 之間的隨機數字。每次重試要求時,請重新定義新的 random_time。完成面向使用者的動作所需的 API 呼叫,可按更頻繁的時間表 (例如 0.5 秒、1 秒和 2 秒) 重試。

批次處理作業的頻率限制

每當批次處理程序達到配額,呼叫 API 的使用者動作延遲時間就會增加。在這類情況下,指數輪詢等策略可能不足以降低使用者動作的延遲時間。

為避免重複達到 API 用量限制,並增加使用者操作的延遲時間,建議您針對批次程序使用頻率限制器 (請參閱 Google 的 RateLimiter 限制)。您可以使用頻率限制器調整 API 要求的頻率,確保持續低於用量限制。

舉例來說,啟動批次處理程序時,預設速率限制為 50 QPS。只要 API 不會傳回錯誤,請慢慢提高頻率限制 (每分鐘 1%)。每次達到配額時,要求比率降低 20%。這種自適應方法可產生更理想的要求率,同時縮短面向使用者的動作延遲時間。