Appengine延迟任务限制为60秒

时间:2013-10-31 05:01:30

标签: java google-app-engine

在Google Appengine文档中,它说任务限制为10分钟。但是,当我运行延期任务时,他们会在60秒内死亡。我无法找到任何可以提及的地方。

是否意味着Appengine延期任务限制为60秒,或者我做错了什么?

更新:第一个任务是从请求触发的,但我不是在等它返回(无论如何,我怎么能没有回调)。随后的 我在任务本身内以递归的方式触发。

DeferredTask df = new QuoteReader(params);
QueueFactory.getDefaultQueue().add(withPayload(df));

其中许多人只是工作,但对于那些达到1分钟限制的人,我得到ApiProxy$ApiDeadlineExceededException

  

com.googlecode.objectify.cache.Pending completeAllPendingFutures:清理待处理的未来时出错:com.googlecode.objectify.cache.CachingAsyncDatastoreService$3@17f5ddc   java.util.concurrent.ExecutionException:com.google.apphosting.api.ApiProxy $ ApiDeadlineExceededException:API调用datastore_v3.Get()花了太长时间才响应并被取消。

我注意到的另一件事是,这会影响同时发生的对该服务器的另一个请求,并且会随DeadlineExceededException一起发生。

1 个答案:

答案 0 :(得分:1)

错误来自超过60秒的数据存储区操作。它与Taskqueue截止日期并不真正相关。你是10分钟是正确的(见here

然而,根据Old related issue(可能从此改为60秒)

  

来自Google:即使离线请求目前最多可以持续10分钟(并且后台实例可以永久存在),数据存储区查询仍然只能存活30秒。

从您的代码完成的异常看起来似乎是Objectify(稍后在请求过滤器中),实际上是超时发生的地方。我建议您拆分数据操作,以便更快地进行数据存储查询,并在必要时对数据操作使用.now(),以便在代码中出现异常。