0

在 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.

4

1 回答 1

1

该错误来自超过 60 秒的数据存储操作。它与任务队列的截止日期本身并没有真正的关系。你是对的,他们是 10 分钟(见这里

但是根据旧相关问题(可能从那以后改为 60 年代)

来自 Google:尽管离线请求目前最多可以存在 10 分钟(而后台实例可以永远存在),但数据存储查询仍然只能存在 30 秒。

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

于 2013-10-31T15:33:54.847 回答