Beispiel #1
0
 def test_forget(self):
     subs = [MockAsyncResultSuccess(uuid()),
             MockAsyncResultSuccess(uuid())]
     ts = TaskSetResult(uuid(), subs)
     ts.forget()
     for sub in subs:
         self.assertTrue(sub.forgotten)
Beispiel #2
0
 def test_iter_native(self):
     backend = SimpleBackend()
     subtasks = [AsyncResult(uuid(), backend=backend)
                     for i in range(10)]
     ts = TaskSetResult(uuid(), subtasks)
     backend.ids = [subtask.task_id for subtask in subtasks]
     self.assertEqual(len(list(ts.iter_native())), 10)
Beispiel #3
0
 def test_iterate_yields(self):
     ar = MockAsyncResultSuccess(gen_unique_id())
     ar2 = MockAsyncResultSuccess(gen_unique_id())
     ts = TaskSetResult(gen_unique_id(), [ar, ar2])
     it = iter(ts)
     self.assertEqual(it.next(), 42)
     self.assertEqual(it.next(), 42)
Beispiel #4
0
 def test_getitem(self):
     subs = [
         MockAsyncResultSuccess(gen_unique_id()),
         MockAsyncResultSuccess(gen_unique_id())
     ]
     ts = TaskSetResult(gen_unique_id(), subs)
     self.assertIs(ts[0], subs[0])
Beispiel #5
0
 def test_iterate_eager(self):
     ar1 = EagerResult(gen_unique_id(), 42, states.SUCCESS)
     ar2 = EagerResult(gen_unique_id(), 42, states.SUCCESS)
     ts = TaskSetResult(gen_unique_id(), [ar1, ar2])
     it = iter(ts)
     self.assertEqual(it.next(), 42)
     self.assertEqual(it.next(), 42)
Beispiel #6
0
 def test_join_native(self):
     backend = SimpleBackend()
     subtasks = [AsyncResult(uuid(), backend=backend) for i in range(10)]
     ts = TaskSetResult(uuid(), subtasks)
     backend.ids = [subtask.id for subtask in subtasks]
     res = ts.join_native()
     self.assertEqual(res, range(10))
Beispiel #7
0
 def setUp(self):
     self.size = 11
     subtasks = make_mock_taskset(10)
     failed = mock_task("ts11", states.FAILURE, KeyError("Baz"))
     save_result(failed)
     failed_res = AsyncResult(failed["id"])
     self.ts = TaskSetResult(gen_unique_id(), subtasks + [failed_res])
Beispiel #8
0
 def test_join_timeout(self):
     ar = MockAsyncResultSuccess(uuid())
     ar2 = MockAsyncResultSuccess(uuid())
     ar3 = AsyncResult(uuid())
     ts = TaskSetResult(uuid(), [ar, ar2, ar3])
     with self.assertRaises(TimeoutError):
         ts.join(timeout=0.0000001)
Beispiel #9
0
    def apply(self):
        """Applies the taskset locally."""
        taskset_id = gen_unique_id()

        # This will be filled with EagerResults.
        return TaskSetResult(taskset_id, [task.apply(taskset_id=taskset_id)
                                            for task in self.tasks])
Beispiel #10
0
 def test_save_restore_delete_taskset(self):
     tid = uuid()
     tsr = TaskSetResult(tid, [AsyncResult(uuid()) for _ in range(10)])
     self.b.save_taskset(tid, tsr)
     stored = self.b.restore_taskset(tid)
     print(stored)
     self.assertEqual(self.b.restore_taskset(tid), tsr)
     self.b.delete_taskset(tid)
     self.assertIsNone(self.b.restore_taskset(tid))
Beispiel #11
0
 def test_save_restore(self):
     subs = [MockAsyncResultSuccess(uuid()), MockAsyncResultSuccess(uuid())]
     ts = TaskSetResult(uuid(), subs)
     ts.save()
     with self.assertRaises(AttributeError):
         ts.save(backend=object())
     self.assertEqual(
         TaskSetResult.restore(ts.taskset_id).subtasks, ts.subtasks)
     ts.delete()
     self.assertIsNone(TaskSetResult.restore(ts.taskset_id))
     with self.assertRaises(AttributeError):
         TaskSetResult.restore(ts.taskset_id, backend=object())
Beispiel #12
0
 def test_save_restore(self):
     subs = [
         MockAsyncResultSuccess(gen_unique_id()),
         MockAsyncResultSuccess(gen_unique_id())
     ]
     ts = TaskSetResult(gen_unique_id(), subs)
     ts.save()
     self.assertRaises(AttributeError, ts.save, backend=object())
     self.assertEqual(
         TaskSetResult.restore(ts.taskset_id).subtasks, ts.subtasks)
     self.assertRaises(AttributeError,
                       TaskSetResult.restore,
                       ts.taskset_id,
                       backend=object())
Beispiel #13
0
    def apply_async(self,
                    connection=None,
                    connect_timeout=conf.BROKER_CONNECTION_TIMEOUT):
        """Run all tasks in the taskset.

        Returns a :class:`celery.result.TaskSetResult` instance.

        Example

            >>> ts = TaskSet(tasks=(
            ...         RefreshFeedTask.subtask(["http://foo.com/rss"]),
            ...         RefreshFeedTask.subtask(["http://bar.com/rss"]),
            ... ))
            >>> result = ts.apply_async()
            >>> result.taskset_id
            "d2c9b261-8eff-4bfb-8459-1e1b72063514"
            >>> result.subtask_ids
            ["b4996460-d959-49c8-aeb9-39c530dcde25",
            "598d2d18-ab86-45ca-8b4f-0779f5d6a3cb"]
            >>> result.waiting()
            True
            >>> time.sleep(10)
            >>> result.ready()
            True
            >>> result.successful()
            True
            >>> result.failed()
            False
            >>> result.join()
            [True, True]

        """
        if conf.ALWAYS_EAGER:
            return self.apply()

        taskset_id = gen_unique_id()
        publisher = TaskPublisher(connection=connection)
        try:
            results = [
                task.apply_async(taskset_id=taskset_id, publisher=publisher)
                for task in self.tasks
            ]
        finally:
            publisher.close()

        return TaskSetResult(taskset_id, results)
Beispiel #14
0
 def test_compat_subtasks_kwarg(self):
     x = TaskSetResult(uuid(), subtasks=[1, 2, 3])
     self.assertEqual(x.results, [1, 2, 3])
Beispiel #15
0
 def setup(self):
     self.size = 10
     self.ts = TaskSetResult(uuid(), make_mock_group(self.app, self.size))
Beispiel #16
0
 def TaskSetResult(self, taskset_id, results, **kwargs):
     """Create :class:`celery.result.TaskSetResult` instance."""
     from celery.result import TaskSetResult
     return TaskSetResult(taskset_id, results, app=self)
Beispiel #17
0
 def setUp(self):
     self.ts = TaskSetResult(
         gen_unique_id(),
         [AsyncResult(gen_unique_id()),
          AsyncResult(gen_unique_id())])
Beispiel #18
0
 def test_join_timeout(self):
     ar = MockAsyncResultSuccess(gen_unique_id())
     ar2 = MockAsyncResultSuccess(gen_unique_id())
     ar3 = AsyncResult(gen_unique_id())
     ts = TaskSetResult(gen_unique_id(), [ar, ar2, ar3])
     self.assertRaises(TimeoutError, ts.join, timeout=0.0000001)
Beispiel #19
0
 def test_TaskSetResult(self):
     x = TaskSetResult(uuid(), [AsyncResult(uuid()) for _ in range(10)])
     self.assertEqual(x, from_serializable(x.serializable()))
     self.assertEqual(x, from_serializable(x))
Beispiel #20
0
 def setup(self):
     self.size = 10
     self.ts = TaskSetResult(uuid(), make_mock_taskset(self.size))
Beispiel #21
0
 def test_iterate_raises(self):
     ar = MockAsyncResultFailure(uuid())
     ts = TaskSetResult(uuid(), [ar])
     it = iter(ts)
     with self.assertRaises(KeyError):
         it.next()
Beispiel #22
0
 def test_iterate_raises(self):
     ar = MockAsyncResultFailure(gen_unique_id())
     ts = TaskSetResult(gen_unique_id(), [ar])
     it = iter(ts)
     self.assertRaises(KeyError, it.next)
Beispiel #23
0
 def setUp(self):
     self.size = 10
     self.ts = TaskSetResult(gen_unique_id(), make_mock_taskset(self.size))
Beispiel #24
0
 def test_revoke_from_resultset(self):
     from celery.result import TaskSetResult, AsyncResult
     r = TaskSetResult(gen_unique_id(), map(AsyncResult, [gen_unique_id()
                                                     for i in range(10)]))
     r.revoke()
     self.assertIn("revoke", MockBroadcastPublisher.sent)
Beispiel #25
0
 def setup(self):
     self.ts = TaskSetResult(uuid(), [
                                     AsyncResult(uuid()),
                                     AsyncResult(uuid())])