Browse Source

chord()() now returns AsyncResult with .parent set, like chain

Ask Solem 12 years ago
parent
commit
9748afcf1e
2 changed files with 3 additions and 4 deletions
  1. 2 2
      celery/app/task.py
  2. 1 2
      celery/canvas.py

+ 2 - 2
celery/app/task.py

@@ -629,14 +629,14 @@ class Task(object):
         state = states.SUCCESS if info is None else info.state
         return EagerResult(task_id, retval, state, traceback=tb)
 
-    def AsyncResult(self, task_id):
+    def AsyncResult(self, task_id, **kwargs):
         """Get AsyncResult instance for this kind of task.
 
         :param task_id: Task id to get result for.
 
         """
         return self._get_app().AsyncResult(task_id, backend=self.backend,
-                                           task_name=self.name)
+                                           task_name=self.name, **kwargs)
 
     def subtask(self, *args, **kwargs):
         """Returns :class:`~celery.subtask` object for

+ 1 - 2
celery/canvas.py

@@ -457,8 +457,7 @@ class chord(Signature):
         if _chord.app.conf.CELERY_ALWAYS_EAGER:
             return self.apply((), kwargs)
         callback_id = body.options.setdefault('task_id', uuid())
-        _chord(**kwargs)
-        return _chord.AsyncResult(callback_id)
+        return _chord.AsyncResult(callback_id, parent=_chord(**kwargs))
 
     def clone(self, *args, **kwargs):
         s = Signature.clone(self, *args, **kwargs)