2009-07-08 24 views
33

Что означает TombstonedTaskError? Он поднимается при попытке добавить задачу в очередь, от в cron'е:Что такое TombstonedTaskError из очереди задач App Engine?

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 либо ..

ответ

46

Вы добавили задачу с этим точным названием прежде. Хотя он уже запущен, исполняемые имена задач хранятся в течение некоторого времени, чтобы предотвратить случайные дубликаты. Если вы назначаете имена задач, вы должны использовать те, которые уникальны во всем мире, чтобы предотвратить это.

+17

Пожалуйста, обновите документацию с помощью этого объяснения. – fjsj

+3

Почему они предотвращают добавление задач с тем же именем ПОСЛЕ завершения старой задачи? Если это так, они должны дать возможность проверить, какие задачи находятся в очереди. –

+2

@krzyk Потому что в противном случае было бы условие гонки, когда вы добавляете задание с таким именем, как только оно заканчивается. Точка имен задач - это предотвращение повторного выполнения. –

Смежные вопросы