确定任务是否已被删除GAE Python

时间:2012-11-22 00:49:11

标签: python google-app-engine queue

我想在任务队列(推送)中加载几个任务,然后确定我已添加到队列的任务组何时完成。我有以下代码:

    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

此段似乎表明您无法立即确定何时删除了某个特定任务。这是对的吗?

我的问题:

  1. was_deleted
  2. 的用途是什么?
  3. 如何确定添加到推送队列的特定任务(或任务组)何时完成

1 个答案:

答案 0 :(得分:1)

我无法回答你的第一个问题,但对于第二个问题,我有类似的需求。

我所做的是将要检查的任务分组到队列中,并使用QueueStatistics类查看该队列的剩余任务数。

以下代码说明了如何获取该数据。您可以在交互式控制台中尝试它。

from google.appengine.api import taskqueue

statsList = taskqueue.QueueStatistics.fetch(taskqueue.Queue("default"))

print(statsList.tasks)