我正在做一些应该在 60 秒内完成的操作,但在极少数情况下可能需要更长的时间(但永远不会超过 10 分钟)。它在应用程序引擎文档中说,如果您捕获到 DeadlineExceededException,那么在它永久失败之前您只有不到一秒钟的时间来执行操作。这是否足以将任务添加到队列和/或执行数据存储写入?我认为最安全的方法是在操作开始时添加任务异步/写入数据存储实体(异步),并在操作完成时将其从队列中删除。后一种方法会使用两倍的 api 调用,但值得吗?
问问题
182 次
3 回答
2
我建议将队列用作所有操作的默认值,这样如果您发现死线超出错误,您就不必实施回退。它更干净,更容易维护,而且用户不必等待操作完成。为了实现这一点,您可以使用 ajax 调用触发队列并在后台获取结果,因此用户不会等待操作完成。是的,这是值得的,因为它可以“保证”您可能需要的时间窗口。
于 2013-03-26T13:42:35.140 回答
1
在引发异常以准备自定义响应后,运行时环境为请求处理程序提供了更多时间(不到一秒)。因此将其添加到任务队列中就足够了。
于 2013-03-25T15:31:08.853 回答
1
如果您不希望客户端继续轮询任务队列结果,我建议您查看 Channel API。它将使您能够向客户端实施推送通知。
在任务队列结束时,您只需向客户端发送通知,让他现在任务已处理。
于 2013-03-27T04:42:42.383 回答