我想在任务队列(推送)中加载几个任务,然后确定我已添加到队列的任务组何时完成。我有以下代码:
task = taskqueue.add(url='/task')
import time
while not task.was_deleted:
logging.info('not deleted yet')
time.sleep(1)
这无限循环。我预计一旦处理并删除了任务,'was_deleted'参数将返回True。但即使删除任务,'was_deleted'仍会返回false。以下是文档的说法:
task.was_deleted:“如果此任务已成功删除,则为True。” https://developers.google.com/appengine/docs/python/taskqueue/tasks#Task_was_deleted
如果成功创建了拉取任务,则应用程序需要在处理后删除任务。系统最多可能需要七天才能识别任务已被删除;在此期间,任务名称仍然不可用。尝试在此期间使用相同名称创建另一个任务将导致“项存在”错误。系统不提供确定已删除的任务名称是否仍在系统中的方法。为避免这些问题,我们建议您让App Engine自动生成任务名称。 https://developers.google.com/appengine/docs/python/taskqueue/overview#Task_Concepts
此段似乎表明您无法立即确定何时删除了某个特定任务。这是对的吗?
我的问题:
答案 0 :(得分:1)
我无法回答你的第一个问题,但对于第二个问题,我有类似的需求。
我所做的是将要检查的任务分组到队列中,并使用QueueStatistics类查看该队列的剩余任务数。
以下代码说明了如何获取该数据。您可以在交互式控制台中尝试它。
from google.appengine.api import taskqueue
statsList = taskqueue.QueueStatistics.fetch(taskqueue.Queue("default"))
print(statsList.tasks)