Browse Source

Implements ResultSet.backend (Issue #1936)

Ask Solem 11 năm trước cách đây
mục cha
commit
b04cfd5eae
2 tập tin đã thay đổi với 7 bổ sung1 xóa
  1. 5 1
      celery/result.py
  2. 2 0
      celery/tests/tasks/test_result.py

+ 5 - 1
celery/result.py

@@ -658,7 +658,7 @@ class ResultSet(ResultBase):
         results = self.results
         if not results:
             return iter([])
-        return results[0].backend.get_many(
+        return self.backend.get_many(
             set(r.id for r in results),
             timeout=timeout, interval=interval, no_ack=no_ack,
         )
@@ -720,6 +720,10 @@ class ResultSet(ResultBase):
     def supports_native_join(self):
         return self.results[0].supports_native_join
 
+    @property
+    def backend(self):
+        return self.app.backend if self.app else self.results[0].backend
+
 
 class GroupResult(ResultSet):
     """Like :class:`ResultSet`, but with an associated id.

+ 2 - 0
celery/tests/tasks/test_result.py

@@ -489,6 +489,7 @@ class test_GroupResult(AppCase):
         subtasks = [self.app.AsyncResult(uuid(), backend=backend)
                     for i in range(10)]
         ts = self.app.GroupResult(uuid(), subtasks)
+        ts.app.backend = backend
         backend.ids = [subtask.id for subtask in subtasks]
         res = ts.join_native()
         self.assertEqual(res, list(range(10)))
@@ -526,6 +527,7 @@ class test_GroupResult(AppCase):
         subtasks = [self.app.AsyncResult(uuid(), backend=backend)
                     for i in range(10)]
         ts = self.app.GroupResult(uuid(), subtasks)
+        ts.app.backend = backend
         backend.ids = [subtask.id for subtask in subtasks]
         self.assertEqual(len(list(ts.iter_native())), 10)