Преглед изворни кода

Raise error on group.apply_async(link=). Closes #3508

Ask Solem пре 8 година
родитељ
комит
d47739c0d8
2 измењених фајлова са 16 додато и 1 уклоњено
  1. 6 1
      celery/canvas.py
  2. 10 0
      t/unit/tasks/test_canvas.py

+ 6 - 1
celery/canvas.py

@@ -988,7 +988,12 @@ class group(Signature):
         return self
 
     def apply_async(self, args=(), kwargs=None, add_to_parent=True,
-                    producer=None, **options):
+                    producer=None, link=None, link_error=None, **options):
+        if link is not None:
+            raise TypeError('Cannot add link to group: use a chord')
+        if link_error is not None:
+            raise TypeError(
+                'Cannot add link to group: do that on individual tasks')
         app = self.app
         if app.conf.task_always_eager:
             return self.apply(args, kwargs, **options)

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

@@ -504,6 +504,16 @@ class test_group(CanvasCase):
         assert isinstance(signature(x), group)
         assert isinstance(signature(dict(x)), group)
 
+    def test_cannot_link_on_group(self):
+        x = group([self.add.s(2, 2), self.add.s(4, 4)])
+        with pytest.raises(TypeError):
+            x.apply_async(link=self.add.s(2, 2))
+
+    def test_cannot_link_error_on_group(self):
+        x = group([self.add.s(2, 2), self.add.s(4, 4)])
+        with pytest.raises(TypeError):
+            x.apply_async(link_error=self.add.s(2, 2))
+
     def test_group_with_group_argument(self):
         g1 = group(self.add.s(2, 2), self.add.s(4, 4), app=self.app)
         g2 = group(g1, app=self.app)