使用限制

Google Play EMM API 针对每个 EMM 的默认上限为每分钟 60000 次查询。

如果您超出配额,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。您可以按照更频繁的时间表(例如,0.5 秒、1 秒和 2 秒)重试完成面向用户的操作所需的 API 调用。

速率限制批处理流程

每次批处理达到配额时,调用该 API 的用户操作的延迟时间会增加。在这类情况下,指数退避算法等策略在保持用户操作低延时方面可能不够有效。

为避免达到 API 的用量限额并增加面向用户的操作的延迟时间,请考虑对批处理使用速率限制器(请参阅 Google 的 RateLimiter)。借助速率限制器,您可以调整 API 请求的速率,以确保您的用量始终低于用量限额。

例如,启动批量处理,默认速率限制为 50 QPS。只要 API 没有返回错误,就会缓慢提高速率限制(每分钟 1%)。每次达到配额后,请将请求率降低 20%。这种自适应方法可实现更理想的请求速率,同时减少面向用户的操作的延迟时间。