|
@@ -12,7 +12,7 @@
|
|
|
from __future__ import absolute_import
|
|
|
|
|
|
from .. import current_app
|
|
|
-from ..result import TaskSetResult
|
|
|
+from ..result import AsyncResult, TaskSetResult
|
|
|
from ..utils import uuid
|
|
|
|
|
|
from .sets import TaskSet, subtask
|
|
@@ -20,11 +20,11 @@ from .sets import TaskSet, subtask
|
|
|
|
|
|
@current_app.task(name="celery.chord_unlock", max_retries=None)
|
|
|
def _unlock_chord(setid, callback, interval=1, propagate=False,
|
|
|
- max_retries=None):
|
|
|
- result = TaskSetResult.restore(setid)
|
|
|
+ max_retries=None, result=None):
|
|
|
+ result = TaskSetResult(setid, map(AsyncResult, result))
|
|
|
if result.ready():
|
|
|
- subtask(callback).delay(result.join(propagate=propagate))
|
|
|
- result.delete()
|
|
|
+ j = result.join_native if result.supports_native_join else result.join
|
|
|
+ subtask(callback).delay(j(propagate=propagate))
|
|
|
else:
|
|
|
_unlock_chord.retry(countdown=interval, max_retries=max_retries)
|
|
|
|
|
@@ -43,10 +43,11 @@ class Chord(current_app.Task):
|
|
|
tid = uuid()
|
|
|
task.options.update(task_id=tid, chord=body)
|
|
|
r.append(current_app.AsyncResult(tid))
|
|
|
- current_app.TaskSetResult(setid, r).save()
|
|
|
- self.backend.on_chord_apply(setid, body, interval,
|
|
|
+ self.backend.on_chord_apply(setid, body,
|
|
|
+ interval=interval,
|
|
|
max_retries=max_retries,
|
|
|
- propagate=propagate)
|
|
|
+ propagate=propagate,
|
|
|
+ result=r)
|
|
|
return set.apply_async(taskset_id=setid)
|
|
|
|
|
|
|