|
@@ -7,7 +7,7 @@ from billiard.serialization import get_pickleable_exception
|
|
|
|
|
|
from celery import conf
|
|
from celery import conf
|
|
from celery import states
|
|
from celery import states
|
|
-from celery.exceptions import TimeoutError
|
|
|
|
|
|
+from celery.exceptions import TimeoutError, TaskRevokedError
|
|
from celery.datastructures import LocalCache
|
|
from celery.datastructures import LocalCache
|
|
|
|
|
|
|
|
|
|
@@ -53,6 +53,10 @@ class BaseBackend(object):
|
|
return self.store_result(task_id, exc, status=states.RETRY,
|
|
return self.store_result(task_id, exc, status=states.RETRY,
|
|
traceback=traceback)
|
|
traceback=traceback)
|
|
|
|
|
|
|
|
+ def mark_as_revoked(self, task_id):
|
|
|
|
+ return self.store_result(task_id, TaskRevokedError(),
|
|
|
|
+ status=states.REVOKED, traceback=None)
|
|
|
|
+
|
|
def prepare_exception(self, exc):
|
|
def prepare_exception(self, exc):
|
|
"""Prepare exception for serialization."""
|
|
"""Prepare exception for serialization."""
|
|
return get_pickleable_exception(exc)
|
|
return get_pickleable_exception(exc)
|
|
@@ -88,7 +92,7 @@ class BaseBackend(object):
|
|
status = self.get_status(task_id)
|
|
status = self.get_status(task_id)
|
|
if status == states.SUCCESS:
|
|
if status == states.SUCCESS:
|
|
return self.get_result(task_id)
|
|
return self.get_result(task_id)
|
|
- elif status == states.FAILURE:
|
|
|
|
|
|
+ elif status in states.PROPAGATE_STATES:
|
|
raise self.get_result(task_id)
|
|
raise self.get_result(task_id)
|
|
# avoid hammering the CPU checking status.
|
|
# avoid hammering the CPU checking status.
|
|
time.sleep(sleep_inbetween)
|
|
time.sleep(sleep_inbetween)
|