提问人:Basj 提问时间:12/2/2020 最后编辑:TheMasterBasj 更新时间:12/4/2020 访问量:3145
如何避免在“很抱歉,发生服务器错误”时DEADLINE_EXCEEDED。请稍等片刻,然后再试一次。
How to avoid DEADLINE_EXCEEDED when "We're sorry, a server error occurred. Please wait a bit and try again." happens?
问:
我读过类似的问题,例如“很抱歉,发生了服务器错误”的错误类型。请稍等片刻,然后重试。“和许多其他错误,但它们特定于其他类型的错误。
我有一个 Google Apps 脚本,它使用分钟计时器运行和处理 Gmail 电子邮件。
每天我都会通过电子邮件收到日志(见下面的屏幕截图#1)。问题是:We're sorry, a server error occurred. Please wait a bit and try again.
没有发生错误的线路的报告,因此很难调试
它时不时地随机发生,即使在这个精确的时间什么也没发生(没有电子邮件要处理),而且 99.9% 的时间,一切都没有错误。当没有要处理的电子邮件时,我不明白为什么此代码会失败:
var mylabel = GmailApp.getUserLabelByName('emailstoprocess'); var threads = mylabel.getThreads(); for (var i = 0; i < threads.length; i++) { // do something }
在我的脚本中,我不调用任何外部 API,只调用 Gmail API,并且没有耗时的循环(尤其是当没有新电子邮件时:脚本应该什么都不做)。我怎样才能控制这个错误(见下面的截图#2)?事实上,在仪表板页面中,我看到:.
DEADLINE_EXCEEDED
Executions
We're sorry, a server error occurred: DEADLINE_EXCEEDED
如何避免此DEADLINE_EXCEEDED
错误,即使我的脚本在失败时什么也没做?或者至少如何避免每天收到有关此的通知?
答:
答
正如我所看到的,这是使用 V8 运行时发生的特定错误。根据所提供的信息,您可以使用 Rhino Runtime 来避免这些错误。这不是理想的解决方法,但没有更多信息需要调试。
更改为 Rhino Runtime
编辑你的清单文件(如果你使用的是新的脚本编辑器,请转到项目设置>在编辑器中标记显示“appsscript.json”清单文件),并将runtimeVersion更改为STABLE或DEPRECATED_ES5,这意味着“将其更改为Rhino”。appscript.json
如果错误仍然存在
在这种情况下,这可能是 Google Apps 脚本中的问题,您应该按照建议将其发布到 Google 问题跟踪器上。
评论
do something
When there is no email to process, I can't see why this code can fail:
threads
0
if (threads.length == 0) return;
var threads = mylabel.getThreads();