2016-12-05 71 views
2

我已阅读gmail api配额解释(https://developers.google.com/gmail/api/v1/reference/quota),但我仍然无法理解是什么导致我们超出限制。了解Gmail api配额

问题1: 每用户配额中的用户数是多少?我不确定用户是个人gmail用户还是使用gmail api的服务客户端。

问题2: 我们几次看到以下错误,但没有看到任何明显的限制。

"error": { 
"errors": [ 
    { 
    "domain": "usageLimits", 
    "reason": "rateLimitExceeded", 
    "message": "Rate Limit Exceeded" 
    } 
], 
"code": 429, 
"message": "Rate Limit Exceeded" 
} 

我们低于250个单位/秒和25,000个单位/ 100个。我们只使用history.list和message.get调用不发送或修改。
我缺少一些其他配额吗?

回答

0
  1. 用户配额基于您正在访问的帐户。所以这将是GMail帐户。有时你可以通过随机发送quotaUser来欺骗它,但这并不总是有效。谷歌也会使用你的IP地址来追踪我怀疑的配额。

  2. 用户速率限制是您要快速进行的防洪保护。

每每秒每用户的用户速率限制250个配额单元,移动 平均(允许短突发)

超过速率限制将导致HTTP 403或HTTP 429太多 请求响应并且您的应用程序应该通过以 指数回退重试。

谷歌计算并不完美,你可能会发送更多或更少的数量,但仍然达到这个配额。只是实施指数退避。

指数回退

用于实现简单指数退避的流程如下:

  1. 请对API的请求。
  2. 接收HTTP 403速率限制响应,表明您应该重试该请求。
  3. 等待1 + random_number_milliseconds秒并重试请求。
  4. 接收HTTP 403速率限制响应,表明您应该重试该请求。
  5. 等2 + random_number_milliseconds秒,然后重试请求。
  6. 接收HTTP 403速率限制响应,表明您应该重试该请求。
  7. 等4 + random_number_milliseconds秒,然后重试请求。
  8. 接收HTTP 403速率限制响应,表明您应该重试该请求。
  9. 等待8 + random_number_milliseconds秒,然后重试请求。
  10. 接收HTTP 403速率限制响应,表明您应该重试该请求。
  11. 等待16 + random_number_milliseconds秒,然后重试请求。
  12. 停止。报告或记录错误。
0

你的问题1

这里有不同的配额的意义在Gmail

  • QPD(每天配额) - 超过24意味着请求的最大数小时期客户编号能够对API进行编号

  • QPS(配额每秒) - 含义a每秒全球配额的申请,这意味着应用程序可以有多少呼叫第二使

  • 配额每秒每用户 - 这意味着查询的用户数量,应用程序可以做。

对于问题2号

好吧,如果你检查Gmail的配额在开发者控制台上,Gmail有一个默认配额:

enter image description here

所以我能建议您使用以下提示,以便有效地使用您的配额:

  • Push notification - 它可以提高应用程序的性能。它允许您消除额外的网络并计算轮询资源所涉及的成本,以确定它们是否发生了变化。只要邮箱发生变化,Gmail API就会通知您的后端服务器应用程序。

  • 使用synchronization来检索和存储尽可能多的最新消息或线程,以达到您的目的。

  • Batching Requests - 减少客户端必须建立的HTTP连接数。

如果您发现您达到此限制,你需要比这更多,那么你可以申请更多的配额here