【问题标题】:What is TombstonedTaskError from App Engine's Task Queue?什么是 App Engine 任务队列中的墓碑任务错误?
【发布时间】:2010-11-09 05:25:34
【问题描述】:

TombstonedTaskError 是什么意思?尝试从 cron-job 将任务添加到队列时引发它:

Traceback (most recent call last):
  File "/base/python_lib/versions/1/google/appengine/ext/webapp/__init__.py", line 501, in __call__
    handler.get(*groups)
  File "/base/data/home/apps/.../tasks.py", line 132, in get
    ).add(queue_name = 'userfeedcheck')
  File "/base/python_lib/versions/1/google/appengine/api/labs/taskqueue/taskqueue.py", line 495, in add
    return Queue(queue_name).add(self)
  File "/base/python_lib/versions/1/google/appengine/api/labs/taskqueue/taskqueue.py", line 563, in add
    self.__TranslateError(e)
  File "/base/python_lib/versions/1/google/appengine/api/labs/taskqueue/taskqueue.py", line 619, in __TranslateError
    raise TombstonedTaskError(error.error_detail)
TombstonedTaskError

搜索文档只有以下内容:

exception TombstonedTaskError(InvalidTaskError)
    Task has been tombstoned.

..这不是特别有用。

我在App Engine code 中也找不到任何有用的东西..

【问题讨论】:

    标签: google-app-engine task-queue


    【解决方案1】:

    您之前添加了一个具有该确切名称的任务。虽然它已经运行,但已执行的任务名称会保留一段时间,以防止意外重复。如果您要分配任务名称,您应该使用全局唯一的名称来防止这种情况发生。

    【讨论】:

    • 为什么他们阻止在旧任务完成后添加同名任务?如果是这样,他们应该允许一种方法来检查队列中的任务。
    • @krzyk 因为否则会出现竞争条件,您可以在完成时添加具有该名称的任务。任务名称的重点是防止重复执行。
    • “一段时间”有多长?分钟?小时?天?
    • @jgeewax 7 天,作为一项规则。不过,这不是你应该依赖的东西。
    • TaskAlreadyExistsError 似乎有时也会引发。这两个异常有什么区别?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-14
    • 1970-01-01
    相关资源
    最近更新 更多