首页 > 解决方案 > Google App Engine cron 作业失败且不重试

问题描述

我有一个简单的 cron.xml 文件,用于运行不同的作业。我将它部署到应用引擎,它可以无缝运行数周。每个人都会时不时地 cron 失败并出现以下错误。奇怪的是它不会重试,即使我有重试参数。

我还注意到,在我重新部署我的应用程序之前,所有后续的 cron 作业都会失败。

错误:

Process terminated because the request deadline was exceeded. (Error code 123)

Cron.xml

<cron>
  <url>/conrurl</url>
  <description>Cron Description</description>
  <schedule>every 30 minutes from 06:00 to 22:00</schedule>
  <retry-parameters>
    <min-backoff-seconds>2.5</min-backoff-seconds>
    <max-doublings>5</max-doublings>
  </retry-parameters>
  <timezone>America/Montreal</timezone>
  <target>backend</target>
</cron>

标签: google-app-enginegoogle-cloud-platformcron

解决方案


对我来说,这看起来像是 HardDeadlineExceededError(请参阅下面的文档片段和链接)。

cron 作业运行需要多长时间?如果我看到超过最后期限的错误并且无法从其他来源获得时间信息,我将使用基本计时器包装我的函数以找出答案。我写的Java不多,但这里有一个例子:https ://www.geeksforgeeks.org/measure-time-taken-function-java/

AppEngine 文档

在 Java 运行时中,如果没有捕获到 DeadlineExceededException,则会抛出无法捕获的 HardDeadlineExceededError。该实例在这两种情况下都会终止,但 HardDeadlineExceededError 不会提供任何时间余量来返回自定义响应。


推荐阅读