2009-07-08 10 views
33

Ý nghĩa của TombstonedTaskError là gì? Nó đang được nâng lên trong khi cố gắng thêm một nhiệm vụ để xếp hàng, từ một cron-job:TombstonedTaskError là gì từ Hàng đợi nhiệm vụ của 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 

Tìm kiếm tài liệu duy nhất đã nói như sau:

exception TombstonedTaskError(InvalidTaskError) 
    Task has been tombstoned. 

.. mà không phải là đặc biệt hữu ích.

tôi không thể tìm thấy bất cứ điều gì hữu ích trong việc App Engine code hoặc ..

Trả lời

46

Bạn đã thêm một nhiệm vụ với cái tên chính xác trước đó. Mặc dù nó đã chạy, các tên tác vụ được thực hiện được giữ lại trong một khoảng thời gian để ngăn chặn các trùng lặp ngẫu nhiên. Nếu bạn chỉ định tên tác vụ, bạn nên sử dụng các tên tác vụ duy nhất trên toàn cầu để ngăn điều này xảy ra.

+17

vui lòng cập nhật tài liệu với giải thích này – fjsj

+3

Tại sao chúng ngăn không cho thêm tác vụ có cùng tên SAU KHI nhiệm vụ cũ đã kết thúc? Nếu là như vậy, họ nên cho phép một cách để kiểm tra những nhiệm vụ nào trong hàng đợi. –

+2

@krzyk Bởi vì nếu không sẽ có một điều kiện chủng tộc, nơi bạn thêm một nhiệm vụ với tên đó chỉ khi nó kết thúc. Điểm của tên tác vụ là để ngăn chặn thực thi lặp lại. –