【问题标题】:How to replace a task on Google App Engine Task Queue?如何替换 Google App Engine 任务队列上的任务?
【发布时间】:2015-03-10 04:50:42
【问题描述】:

当将某个任务添加到任务队列时,我想确保只有一个这样的任务。如果这个任务已经存在,我想删除它并添加新任务(推迟它的执行也可以)。这是我的代码:

queue = taskqueue.Queue()
queue.delete_tasks_by_name('task_name')
task = taskqueue.Task(
    name = 'task_name',
    url = '/task/url',
    method = 'GET',
    countdown = 3600)
queue.add(task)

运行代码时,它会引发TombstonedTaskError,根据文档,这是有意义的。有没有办法替换或推迟执行现有任务?

【问题讨论】:

  • @marcadian 这正是问题中的代码所做的......
  • 是的,错过了。为什么需要更换任务?从您的示例中,没有更改有效负载/参数。
  • @marcadian 我需要重新开始倒计时
  • 这里可能不需要任务队列,在数据存储中放置一个条目,并且每 5 分钟运行一次 cron 作业。如果entry.t

标签: python google-app-engine task-queue


【解决方案1】:

Use tags instead of names。给标签一个唯一的名称,然后执行lease_task_by_tag 以查看它是否存在。

add(taskqueue.Task(payload='parse1', method='PULL', tag='parse')) Lease_tasks_by_tag(lease_seconds,max_tasks,tag=None,deadline=10)

【讨论】:

  • 谢谢,但lease_tasks_by_tag 仅适用于拉取队列任务。我的任务是推送队列任务。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-29
  • 2019-02-24
  • 2011-06-24
  • 1970-01-01
  • 2011-01-08
  • 1970-01-01
相关资源
最近更新 更多