获取邮件的Gmail API限制

时间:2014-07-05 17:35:06

标签: javascript email google-api gmail gmail-api

据我所知,目前谷歌的API每秒向其API(from their docs)提供10个请求,而且看起来远远不足以让您轻松使用邮件。我需要收到所有电子邮件'标题(或至少发件人和收件人)。有没有什么比等待numberOfMails / 10秒更好的了?

我目前正在从客户端JavaScript应用程序访问API,我正在考虑通过多个计算机/应用程序为同一用户分发API调用,但仍不清楚他们的限制是否适用gmail用户或注册的应用程序。

无论如何,希望得到一些想法如何处理,目前的配额完全无法使用。

2 个答案:

答案 0 :(得分:5)

您引用的10个请求/秒/用户限制不是以一秒钟的粒度强制执行,而是以更长的移动窗口强制执行。在您获得回击之前,您应该能够超过该限制(即显着)几秒钟。它是故意编写的,允许用户等短期爆发。

批处理有助于提高吞吐量,但不允许您在长时间窗口内超过此限制(批处理中的100个请求仍计为100个请求)。我不会批量发送超过50或100个请求,或者你肯定会注意到其中一些请求受到限制(429)。

是的,项目范围的限制比10个请求/秒更加慷慨。

答案 1 :(得分:4)

您可以使用批处理请求一起发送多个请求。本周我花了整整一天来搞清楚这一点。 java代码是这样的:

BatchRequest batchRequest = service.batch();
//callback function. (Can also define different callbacks for each request, as required)
JsonBatchCallback<Thread> callback = new JsonBatchCallback<Thread>() {

    @Override
    public void onSuccess(Thread t, HttpHeaders responseHeaders)
        throws IOException {
        System.out.println(t.getMessages().get(0).getPayload().getBody().getData());
    }

    @Override
    public void onFailure(GoogleJsonError e, HttpHeaders responseHeaders)
        throws IOException {

    }
};

// queuing requests on the batch request
for (Thread thread : threads) {
    service.users().threads().get("me", threads.getId()).queue(batchRequest, callback);
 }


batchRequest.execute();

由问题的作者添加:对于那些也遇到此问题的人:https://developers.google.com/gmail/api/guides/batchhttps://developers.google.com/api-client-library/javascript/features/rpcbatch。虽然不推荐使用RpcBatch,但它现在正在运行,每批限制为1000个请求。