Gmail API获取邮件的限制



据我所知,目前google的API提供每秒10个请求到它的API(来自他们的文档),这看起来远远不足以舒适地处理邮件。我需要得到所有电子邮件的标题(或至少发件人和收件人)。还有什么比等待numberOfMails / 10秒更好的吗?

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

无论如何,希望得到一些想法如何处理它,目前的配额是完全不可用的

您引用的10个请求/秒/用户限制不是在一秒粒度下强制执行的,而是更长的移动窗口。你应该能够在某些秒内超过这个限制(即显著地),然后才会遇到阻力。它被有意地编写为允许用户的短期突发等。

批处理将有助于提高吞吐量,但不允许您在长窗口内超过此限制(批处理中的100个请求仍然算作100个请求)。我不会批量发送超过50或100个请求,否则你肯定会注意到其中一些请求被节流(429)。

是的,项目范围的限制比10个请求/秒要慷慨得多。

可以使用批处理请求将多个请求一起发送。这周我花了一整天的时间来解决这个问题。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/batch和https://developers.google.com/api-client-library/javascript/features/rpcbatch。虽然RpcBatch已被弃用,但它现在正在工作,并且每个批处理限制为1000个请求。

相关内容

  • 没有找到相关文章

最新更新