【问题标题】:GAE Task Queue processing time in javajava中的GAE任务队列处理时间
【发布时间】:2012-09-20 05:18:40
【问题描述】:

在我的 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>

【问题讨论】:

    标签: java google-app-engine servlets task-queue


    【解决方案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 浏览器。在您的报告生成中添加一些日志记录。将生成的报告存储在数据存储中,或通过电子邮件发送。

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-28
        • 2018-06-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多