Gmail API 的配额单位如何运作?

How Gmail API's Quota Units Work?

根据gmail的API docs,限制如下:

API Limit Type  Limit
Daily Usage 1,000,000,000 quota units per day
Per User Rate Limit 250 quota units per user per second, moving average (allows short bursts)

在下面的 table 中,文档说 messages.get 需要 5 个配额单位。

就我而言,我感兴趣的是每秒轮询我的收件箱以检查是否有新消息,如果有的话,获取这些消息的内容。

问题 1:这是否意味着我每秒要花费 5 个配额单位,而且我会远远低于我的配额?

问题 2:如何只检查 "new" 条消息?也就是说,自从我上次调用 API 之后收到的消息?我是否需要在每次 API 调用后向消息添加 "read" 标签(在 "modify" API 调用上花费额外的配额单位),还是有更简单的方法?

问题 1:

没错。您将在投票上花费 (5 * 60 * 60 * 24 =) 432000 个配额点,这远未达到限制。如果您希望 Google 通知您有新消息而不是自己轮询,您也可以实施 push notifications

问题二:

Listing messages has an 在特定时间戳后查询消息的次数,以纪元以来的秒数为单位。

如果您想在 2016 年 5 月 29 日星期日 07:00:00 GMT 之后收到消息,您只需在 q 查询参数中提供值 after:1464505200

问题 1:

你说得对,在你给出的 documentation 中也有详细说明。

问题二:

正如您所要求的那样,更简单的方法是使用 Batching Requests。如文档中所述,Gmail API 支持批处理以允许您的客户端将多个 API 调用放入单个 HTTP 请求中。

这个相关的 SO post - Gmail API limitations for getting mails 可以进一步提供有关批处理使用的有用想法。