2011-03-30 67 views
1

我使用任务队列向用户发送未来提醒。每个任务都非常小,但不知何故这种情况发生了,我的应用程序已关闭: enter image description here填写任务队列

任何想法可能会导致这种情况?

更新

只需约30分钟后,我得到一个非常不同的报告。 enter image description here

“队列中的任务”计数几乎相同,但“任务队列存储的任务计数”突然少得多。 :○

只是要清楚我所做的:

  • 我清除的“删除器”的任务,这是使用大量的CPU,但它只有16个小任务,所以它不应该真的很大程度上影响了队列的大小。

  • 捕获当您尝试将任务添加到完整队列时发生的异常。这应该不会影响添加的任务数量。

  • 浏览了Reddit半小时。这解决了它。

+1

不正确的编码? – 2011-03-30 12:07:11

+0

是的,我显然做错了什么,但我无法弄清楚如此少量的任务会占用这么多空间。 – Bemmu 2011-03-30 12:22:25

+0

您是否知道可以增加分配给任务队列的存储空间量? – 2011-03-30 23:37:33

回答

3

听起来就像你在任务队列中有一个“叉炸弹”。

如果在任务中添加任务,如果在添加任务后引发异常,您可能会意外创建大量任务。原来的任务被重试,新的任务被重新添加(并且可能会自己的炸弹),异常再次被提升,任务被重试等。

阻止这种情况的一种方法是给新任务一个具体名称,以便它不能被添加到队列两次。

Brett Slatkin在他的一个Google I/O讲座(here at 7:58)中对此进行了讨论。

+0

+1叉炸弹肯定的,我已经看到了这个确切的问题在我的第一次Gae实验:) – systempuntoout 2011-03-30 19:31:26

2

我有这个问题,但我在短时间内排队几千个任务。 如果您感觉代码没有问题,那么只需增加任务队列存储任务字节的配额。 在您的queue.yaml中包含这些行以更改配额

total_storage_limit: 300M