【问题标题】:Service invoked too many times for one day: urlfetch - Pretty sure quota not exceeded一天内调用了太多次服务:urlfetch - 很确定没有超出配额
【发布时间】:2020-12-29 12:47:26
【问题描述】:

我们使用自定义脚本通过 UrlFetchApp.fetch 从 Bookeo API 检索数据。微米 一切都很顺利,但是今天出现以下错误“一天内调用了太多次服务:urlfetch”

我们知道https://developers.google.com/apps-script/guides/services/quotas 中提到的每天 20.000 次呼叫的限制,但我们认为我们不会接近这个限制(最多可能 1.000 - 1.500/天)

发生错误的代码部分是

var responseBooking = UrlFetchApp.fetch(urlBooking);

所以我确定这与配额问题有关

奇怪的是它就像 1 次 / 5-6 次尝试一样工作

我的问题是:

  • Google 是否更改了它的配额限制? (我没有看到任何关于它的通信)
  • 有没有办法查看每个服务的调用次数?
  • 是否有关于 Google Apps 脚本技术支持的聊天?

【问题讨论】:

  • 您需要意识到的是,每天 20,000 的限制实际上是 20,000/(24*60*60) 大约每秒 0.23 次调用,如果超过该速率,您将承担风险得到这些错误。这是在有许多用户的服务器中执行这些限制的唯一公平方法。

标签: google-apps-script urlfetch quota


【解决方案1】:

答案:

  • Google 是否更改了它的配额限制? (我没有看到任何关于它的通讯)

没有。

  • 有没有办法查看每个服务的调用次数?

没有。

  • 是否有关于 Google Apps 脚本技术支持的聊天?

没有。

更多信息:

除了每天 20,000 次调用的限制外,还有一些限制在短时间内限制调用次数。

配额基于服务调用的滚动平均值起作用。您每天的配额为 20,000,但如果您持续超过每秒约 0.231 次调用 (20,000/86,400) 的速率,您仍然会触发错误。

你可以通过等待一段时间来纠正这个问题,这样调用的冲动就会下降。我还建议在您的代码中添加某种形式的exponential backoff,以防止这种情况在未来再次发生。

参考资料:

【讨论】:

  • 我相信您的结果是以秒为单位的每次调用而不是每秒调用 20000/(24*60*60)
  • @Cooper 你说得对,谢谢,我已经编辑了计算
  • 你有一个例子来说明如何在这个例子中使用指数退避吗?在我看来,当你通过谷歌说停止的魔法门槛时。你得到一个错误,这就是你的功能的结束,直到他们决定重新打开。我一直试图与最低限度保持良好的差距以避免任何问题。
  • 感谢您的解释,但我怀疑我们是否达到了 0.231 调用/秒,因为当我们单击按钮时会调用该函数(它可能每 10-15 分钟发生 1 次)。我们只有 3 个人使用电子表格。我认为这是一个临时错误,因为它在当天晚些时候没有问题。 (谷歌现在为他们的不同服务做了一些更新,也许这就是原因)
猜你喜欢
  • 2020-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多