AppEngine / Java Cron DeadlineExceededException

时间:2012-11-26 03:26:35

标签: java google-app-engine cron

我在appengine项目中设置了cron:

<?xml version="1.0" encoding="UTF-8"?>
<cronentries>
    <cron>
        <url>/cron/someurl</url>
        <description>cron</description>
        <schedule>every monday 8:00</schedule>
        <timezone>Asia/Singapore</timezone>
    </cron>
</cronentries>

我收到错误:

com.google.apphosting.api.DeadlineExceededException: This request (40811df3b6350a70) started at 2012/11/26 00:00:00.404 UTC and was still executing at 2012/11/26 00:09:59.917 UTC.

运行任务是1分钟的限制吗?我虽然cron没有这个限制。如何避免cron入口中的错误?

感谢。

2 个答案:

答案 0 :(得分:4)

根据documentation,cron调用的HTTP请求最多可以运行10分钟。如果您在HH:MM:SS值中密切注意到异常日志,您会发现自该作业启动以来总共已经过了10分钟。

您可能希望查看代码以了解为什么需要这么长时间。如果您的要求使您的任务运行时间超过10分钟,我建议您查看捕获异常,然后插入另一个请求来运行具有某个请求参数的作业,该参数告诉作业从上次停止的位置开始

或者,您也可以查看Backends

答案 1 :(得分:1)

此外,您可以尝试使用任务队列(10分钟最大值)并在接近时间限制时重新入队,使用存储在数据存储区中的任何状态变量,或者如果您依赖于数据存储区中的迭代,则可以通过数据存储区游标到另一个重新排队的任务。对我来说效果很好。