2012-07-24 88 views
3

我在GAE中以速率1/s推送任务队列。并不是每个任务都需要执行,但是我只能在被调用时才能验证它。所以每当任务被调用时,我都有“if(condition)execute else drop”语句。GAE强制推送任务队列执行下一个任务

现在我的问题是我有太多的任务,其中许多将被丢弃。与其等待下一秒将调用另一个任务,我想强制队列调用下一个任务,这样第二个任务就不会被浪费。

我想问一下 - 是否可以迫使队列立即获得另一项任务而不是等待?或者我应该实施自己的?

如果不清楚,我很抱歉,我会尽量用更好的词汇。

在此先感谢!

回答

2

您需要使用pull tasks,对于每个推送任务队列还需要一个拉任务。当您的推送任务执行从拉队列中执行一批任务并检查它们的条件时。
下一步将丢弃所有不再“有效”的任务并执行一个有效的任务。一旦你执行了一个有效的任务,你将返回所有剩下的任务(将他们的时间缩短为零)。

如果存在有效任务,此流程应该每个推送任务至少承担一个任务。

+0

谢谢,看起来和我一直在寻找的东西一样:) – Gricha 2012-07-24 16:00:08

+0

如果你打算每秒处理一个任务,那么使用后端来处理任务可能会更容易,而不是一个推送队列每秒一个任务。 – 2012-07-27 05:37:40