java中的GAE任务队列处理时间



在我的jsp web应用程序中,当我处理报告时,它总是导致DeadlineExceededException。因此,我将流程移动到应用程序引擎的任务队列中。但使用任务队列,它不会生成报告,也不会显示任何eeror消息。任务队列是DeadlineExceededException的正确解决方案吗?或者任务队列的处理时间限制为1分钟。

我的queue.xml配置如下

<?xml version="1.0" encoding="UTF-8"?>
<queue-entries>
<queue>
<name>default</name>
<rate>5/s</rate>
</queue>
<queue>
<name>subscription-queue</name>
<rate>5/s</rate>
</queue>
<queue>
<name>excel-generator-queue</name>
<rate>5/s</rate>
</queue>
</queue-entries>

任务队列超时限制远大于1分钟。(至少需要10分钟;您必须阅读GAE文档才能找到答案)。

此外,检查您是否使用推送或拉取队列,以及您是否对自己的选择感到满意。我认为您的配置可能是针对默认队列类型的推送。

您是否在排队任务调用的代码中放置了任何日志记录代码?这将允许您了解代码是否正在执行。

需要考虑两个截止日期-您进行的单个应用引擎API调用的截止日期和任务处理的总体截止日期。

当您调用应用引擎API时,有时调用不会在大约5秒内完成,并且您将收到DeadlineExceededException。您可以选择再次拨打电话。某些API(如Url获取和租赁任务)允许您指定截止日期。如果您捕捉到异常,您将看到哪些代码超时。

使用任务队列时,任务处理的总截止时间为10分钟,除非您使用的是后端-https://developers.google.com/appengine/docs/python/backends/(当不使用任务队列时,总的截止时间只有60秒。)

该问题提到"它不会生成报告"。执行任务时,没有web浏览器可以查看进度报告或最终报告。在您的报告生成中添加一些日志记录。将生成的报告存储在数据存储中,或通过电子邮件发送。

最新更新