2012-09-28 48 views
2

在我的jsp web应用程序中,当我处理报告时,它始终导致DeadlineExceededException。所以我将这个过程转移到了应用程序引擎的任务队列中。 但是使用任务队列,它不会生成报告,也不会显示任何eeror消息。对于DeadlineExceededException或任务队列,任务队列是一个适当的解决方案,处理时间限制为1分钟。java中的GAE任务队列处理时间

我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

任务队列超时限制为1分钟大得多。 (应该至少10分钟;您必须阅读GAE文档才能找到)。

此外,检查您是否使用推或拉队列,并确定您是否满意您的选择。我认为你的配置可能是默认队列类型的推送。

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

1

有两个最后期限要考虑 - 您制作的各个App Engine API调用的截止日期以及任务处理的总体截止日期。

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

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

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