【发布时间】:2013-11-11 00:03:42
【问题描述】:
在 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 而下降。
【问题讨论】:
-
你得到的确切错误是什么?
-
您是在后台运行任务,还是在请求时触发它并等待任务完成后再将请求返回给用户?如果是后者,那是不正确的,请求有 60 秒的限制,不管其他任何事情。
-
请显示您如何触发这些任务的代码。
-
请参阅更新后的描述。