我在一些代码中看到非常奇怪的行为,它检查队列的QueueStatistics以查看当前是否有任何任务正在运行。据我所知,没有任务正在运行,并且在过去的12个多小时内没有排队等候。开发控制台证实了这一点,说队列中有0个任务。
查看调试器中的QueueStatistics信息,确认我的进程正在退出,因为它看到队列中500+(!!!)任务的顺序。它还表示它在过去一分钟内运行了> 1000个任务,但它在过去一小时内运行了0个任务。如果我通过ETA Usec进行解析,则“准确”显示时间,就好像ETA在抽取QueueStatistics的下一分钟内一样。
每当我重新运行我的servlet时,都会反复发生这种情况,而servlet所做的第一件事就是检查队列统计信息。没有其他servlet,任务或cron作业正在运行,因为这是我的本地开发服务器。然而,队列统计数据仍然坚持我已经运行了数百个任务。
我找不到有关此行为的任何其他报告,但感觉我必须遗漏一些关于队列统计信息的主要内容。我正在使用的代码非常简单:
Queue taskQueue = QueueFactory.getQueue("myQueue");
QueueStatistics stats = taskQueue.fetchStatistics();
if (stats.getNumTasks() > 0) { return; }
我错过了什么?队列统计信息在本地开发服务器上是否完全不可靠?
答案 0 :(得分:0)
如果它在部署时按预期工作,那么这就是标准。
许多事情不像在部署环境中那样起作用(并行线程不是并行的,后端支持在编写时对于解决它们有些打破)所以部署部署部署!
另一个例子是频道API。在本地使用时,它使用轮询,如果你查看日志/浏览器调试,你会看到100个。但是在部署时一切都很顺利,它按预期工作。