代码之家  ›  专栏  ›  技术社区  ›  Basj

当“很抱歉,发生服务器错误。请稍等片刻,然后重试。”发生时,如何避免DEADLINE_EXCEEDED?

  •  0
  • Basj  · 技术社区  · 4 年前

    我读过类似的问题,比如 Error type of "We're sorry, a server error occurred. Please wait a bit and try again. " 以及许多其他错误,但它们特定于其他类型的错误。


    我有一个谷歌应用程序脚本正在运行,并使用分钟计时器处理Gmail电子邮件。

    我每天都会通过电子邮件收到日志 We're sorry, a server error occurred. Please wait a bit and try again. (见下面的截图#1)。问题是:

    • 没有发生错误的行的报告,因此很难调试

    • 它偶尔会随机发生,即使在这个精确的时间没有发生任何事情(没有电子邮件需要处理),99.9%的时间里,一切都能正常工作。当有 没有要处理的电子邮件 ,我不明白为什么这段代码会失败:

        var mylabel = GmailApp.getUserLabelByName('emailstoprocess'); 
        var threads = mylabel.getThreads();
        for (var i = 0; i < threads.length; i++) {
            // do something
        }
      
    • 在我的脚本中,我不调用任何外部API,只调用Gmail API,并且没有耗时的循环(尤其是当没有新的电子邮件时:脚本应该什么都不做)。我怎么能控制这件事 DEADLINE_EXCEEDED 错误(见下面的屏幕截图2)?事实上,在仪表板中, Executions 页面,我看到: We're sorry, a server error occurred: DEADLINE_EXCEEDED .

    如何避免这种情况 已超过截止日期 即使我的脚本在失败时什么也没做,也会出错吗? 或者至少如何避免每天收到有关此事的通知?

    enter image description here

    enter image description here

    0 回复  |  直到 4 年前
        1
  •  -2
  •   Jose Vasquez    4 年前

    答案

    正如我所看到的,这是一个在使用V8运行时发生的特定错误。根据提供的信息,您可以通过使用Rhino Runtime来避免这些错误。这不是理想的解决方法,但没有更多信息需要调试。

    更改为Rhino运行时

    编辑您的 manifest file appscript.json (如果您正在使用新的脚本编辑器,请转到 项目设置>标记在编辑器中显示“appsscript.json”清单文件 )并更改 运行时版本 稳定 弃用_ES5 这意味着“将其更改为Rhino”。

    如果错误仍然存在

    在这种情况下,这可能是Google Apps脚本中的一个问题,您应该将其发布在 Google Issue Tracker 正如所建议的那样。

    参考资料

    Manifests

    Manifest structure