2

在我的 jsp Web 应用程序中,当我处理报告时,它总是会导致 DeadlineExceededException。所以我把这个过程移到了应用引擎的任务队列中。但是使用任务队列,它不会生成报告,也不会显示任何错误消息。任务队列是否是 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>
4

2 回答 2

1

有两个截止日期需要考虑 - 您进行单个 App Engine API 调用的截止日期,以及您的任务处理的总体截止日期。

当您调用 App Engine API 时,有时调用不会在大约 5 秒内完成,您将收到 DeadlineExceededException。您可以选择再次拨打电话。Url Fetch 和 Lease Tasks 等一些 API 允许您指定截止日期。如果您捕获到异常,您将看到哪个代码超时。

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

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

于 2012-10-03T04:12:00.367 回答
1

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

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

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

于 2012-09-28T10:42:50.910 回答