Browse Source

Merge branch 'rossdeane/master'

Ask Solem 10 years ago
parent
commit
bb0fb4a438
1 changed files with 6 additions and 0 deletions
  1. 6 0
      celery/canvas.py

+ 6 - 0
celery/canvas.py

@@ -466,6 +466,9 @@ class chain(Signature):
     def from_dict(self, d, app=None):
         tasks = d['kwargs']['tasks']
         if d['args'] and tasks:
+            # make sure that tasks are made into signatures (Issue #2076)
+            if not isinstance(tasks[0], Signature):
+                tasks[0] = signature(tasks[0])
             # partial args passed on to first task in chain (Issue #1057).
             tasks[0]['args'] = tasks[0]._merge(d['args'])[0]
         return chain(*d['kwargs']['tasks'], app=app, **d['options'])
@@ -591,6 +594,9 @@ class group(Signature):
         if d['args'] and tasks:
             # partial args passed on to all tasks in the group (Issue #1057).
             for task in tasks:
+                # make sure that tasks are made into signatures (Issue #2076)
+                if not isinstance(tasks[0], Signature):
+                    task = signature(task)
                 task['args'] = task._merge(d['args'])[0]
         return group(tasks, app=app, **d['options'])