示例#1
0
 def test_slow_task(self):
     thread_pool = ThreadPoolExecutor(1)
     future = thread_pool.submit(self._fake_slow_task)
     self.assertFalse(future.done())
     run_until_complete(future)
     self.assertTrue(future.done())
     self.assertEqual(future.result(), 3)
示例#2
0
        def coro():
            executor = ThreadPoolExecutor(100)
            fs = []
            for _ in range(5000):
                f = executor.submit(demo)
                f.add_done_callback(_callback)
                fs.append(f)

            yield wait(fs)
示例#3
0
 def test_wait_specified_tasks(self):
     thread_pool = ThreadPoolExecutor(1)
     future_slow = thread_pool.submit(self._fake_slow_task)
     future_very_slow = thread_pool.submit(self._fake_very_slow_task)
     start_time = time.time()
     run_until_complete(future_slow)
     end_time = time.time()
     self.assertLess(end_time - start_time, 2)
     self.assertTrue(future_slow.done())
     self.assertFalse(future_very_slow.done())
     self.assertEqual(future_slow.result(), 3)
示例#4
0
    def test_shutdown_task(self):
        class obj:
            is_done = False

        thread_pool = ThreadPoolExecutor(1)
        future = thread_pool.submit(self._fake_infinite_task, obj)
        self.assertFalse(future.done())
        obj.is_done = True
        thread_pool.shutdown(wait=False)  # shutdown without wait
        self.assertFalse(future.done())
        run_until_complete(future)
        self.assertTrue(future.done())

        thread_pool = ThreadPoolExecutor(1)
        obj.is_done = False
        future = thread_pool.submit(self._fake_infinite_task, obj)
        self.assertFalse(future.done())
        obj.is_done = True
        thread_pool.shutdown()  # wait to finish
        self.assertTrue(future.done())
示例#5
0
    def test_run_on_executor(self):
        thread_pool = ThreadPoolExecutor(1)

        @thread_pool.coroutine
        def _fake_slow_task():
            time.sleep(1)
            return 3.5

        future = _fake_slow_task()
        self.assertFalse(future.done())
        run_until_complete(future)
        self.assertTrue(future.done())
        self.assertEqual(future.result(), 3.5)
示例#6
0
    def test_run_on_executor_for_class(self):
        thread_pool = ThreadPoolExecutor(1)

        class Demo(object):
            @thread_pool.coroutine
            def _fake_slow_task(self):
                time.sleep(1)
                return 3.1

        demo = Demo()
        future = demo._fake_slow_task()
        self.assertFalse(future.done())
        run_until_complete(future)
        self.assertTrue(future.done())
        self.assertEqual(future.result(), 3.1)
示例#7
0
def setup_settings():
    opt.set_option("executor", ThreadPoolExecutor(2))
    opt.set_option("sender", EmailSender(host=opt.SMTP_HOST))
示例#8
0
 def init(self):
     self.threadpoolexecutor = ThreadPoolExecutor(self._n_workers)
示例#9
0
 def test_add_multi_tasks(self):
     thread_pool = ThreadPoolExecutor(5)
     futures = [thread_pool.submit(self._fake_task) for _ in range(5)]
     run_until_complete(wait(futures))
     for f in futures:
         self.assertEqual(f.result(), 2)
示例#10
0
 def test_task_exception(self):
     thread_pool = ThreadPoolExecutor(1)
     future = thread_pool.submit(self._fake_task_with_exception)
     run_until_complete(future)
     self.assertRaises(AttributeError, future.result)