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 调用,请使用指数退避策略来应对达到配额的情况。指数退避算法是一种以指数方式重试请求的算法。下面是实现简单指数退避算法的示例流程:
- 向 Google Play EMM API 发出请求。
- 收到
HTTP 429
响应。 - 等待 2 秒 +
random_time
,然后重试该请求。 - 收到
HTTP 429
响应。 - 等待 4 秒 +
random_time
,然后重试该请求。 - 收到
HTTP 429
响应。 - 等待 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%。这种自适应方法可实现更理想的请求速率,同时减少面向用户的操作的延迟时间。