Browse Source

Allow to create group with single task (fixes issue #4255) (#4280)

* Allow to create group with single task in a list (#4255)

* Test ability to create group with single task
Anton 7 years ago
parent
commit
e305595983
2 changed files with 10 additions and 0 deletions
  1. 2 0
      celery/canvas.py
  2. 8 0
      t/unit/tasks/test_canvas.py

+ 2 - 0
celery/canvas.py

@@ -950,6 +950,8 @@ class group(Signature):
             tasks = tasks[0]
             if isinstance(tasks, group):
                 tasks = tasks.tasks
+            if isinstance(tasks, abstract.CallableSignature):
+                tasks = [tasks.clone()]
             if not isinstance(tasks, _regen):
                 tasks = regen(tasks)
         Signature.__init__(

+ 8 - 0
t/unit/tasks/test_canvas.py

@@ -547,6 +547,14 @@ class test_group(CanvasCase):
         g = group([self.add.s(i, i) for i in range(10)])
         assert list(iter(g)) == list(g.keys())
 
+    def test_single_task(self):
+        g = group([self.add.s(1, 1)])
+        assert isinstance(g, group)
+        assert len(g.tasks) == 1
+        g = group(self.add.s(1, 1))
+        assert isinstance(g, group)
+        assert len(g.tasks) == 1
+
     @staticmethod
     def helper_test_get_delay(result):
         import time