Google Calendar API-对日历使用限制的更深入了解超出了错误范围

时间:2018-12-13 22:13:54

标签: google-calendar-api google-api-nodejs-client

我有一个自2015年以来一直在运行的应用程序。它使用Google node.js库(日历v3 API)通过服务帐户读取和写入大约16个日历。我们也有G Suite教育版。

一般过程是:

  • 每30秒通过列表操作缓存所有日历数据
  • 周期性地,一个学生会请求一个约会“插槽”,它首先检查该插槽是否仍处于打开状态(通过列表调用),然后是一个插入。

仅此而已。直到过去几天,API insert调用开始失败为止,它一直运行良好:

{
    "code": 403,
    "errors": [{
        "domain": "usageLimits",
        "reason": "quotaExceeded",
        "message": "Calendar usage limits exceeded."
    }]
}

这并不是很特别-文档具有三个“解决方案”:

  
      
  • 在G Suite管理员中阅读有关日历使用限制的更多信息   帮助。
  •   
  • 如果一个用户代表许多用户发出很多请求   的G Suite域,请考虑使用具有授权的服务帐户   委派(设置quotaUser参数)。
  •   
  • 使用指数补偿。
  •   
  1. 据我所知,我没有超出任何规定的限制。
  2. 虽然我使用的是服务帐户,但它不是代表用户发出请求。服务帐户对日历具有​​写权限,并将用户添加为与会者
  3. 最后,尽管我没有实现此功能,但我认为指数补偿并不会有所帮助。从插入请求到下一次插入调用之间的时间以秒为单位,而不是毫秒。此外,仅使用简单脚本在命令行上直接运行调用也会产生相同的问题。

一些统计数据:

2015 - 2,466 inserts, 186 errors
2016 - 25,747 inserts, 237 errors
2017 - 42,815 inserts, 225 errors
2018 - 41,390 inserts, 1,074 errors (990 of which are in the past 3 days)

这些年来,我已经更新了代码,但是这个词在很大程度上仍未触及。

目前,我不确定该怎么做-没有渠道可以访问Google,并且虽然我尚未实施退避策略,但该应用程序的计时方式,后续调用都延迟了几秒钟,并在顺序处理请求的队列。唯一的并发请求将是列表操作。

0 个答案:

没有答案