From 932dcc7dbe8fe20a3619e80183bb0f03f6473bd9 Mon Sep 17 00:00:00 2001 From: Nicolas Delaby Date: Sun, 17 Nov 2013 19:36:28 +0100 Subject: [PATCH] Pass timeout argument to Future.result --- tornado/concurrent.py | 4 ++-- tornado/test/concurrent_test.py | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/tornado/concurrent.py b/tornado/concurrent.py index 8a4f22878..9a10905e9 100644 --- a/tornado/concurrent.py +++ b/tornado/concurrent.py @@ -124,11 +124,11 @@ class TracebackFuture(Future): self.__exc_info = exc_info self.set_exception(exc_info[1]) - def result(self): + def result(self, timeout=None): if self.__exc_info is not None: raise_exc_info(self.__exc_info) else: - return super(TracebackFuture, self).result() + return super(TracebackFuture, self).result(timeout=timeout) class DummyExecutor(object): diff --git a/tornado/test/concurrent_test.py b/tornado/test/concurrent_test.py index 854f1160e..849337ed6 100644 --- a/tornado/test/concurrent_test.py +++ b/tornado/test/concurrent_test.py @@ -28,6 +28,13 @@ from tornado.iostream import IOStream from tornado import stack_context from tornado.tcpserver import TCPServer from tornado.testing import AsyncTestCase, LogTrapTestCase, bind_unused_port, gen_test +from tornado.test.util import unittest + + +try: + from concurrent import futures +except ImportError: + futures = None class ReturnFutureTest(AsyncTestCase): @@ -106,6 +113,13 @@ class ReturnFutureTest(AsyncTestCase): self.assertIs(future, future2) self.assertEqual(future.result(), 42) + @unittest.skipIf(futures is None, "futures module not present") + def test_timeout_future(self): + with self.assertRaises(futures.TimeoutError): + future = self.async_future() + # Do not call self.wait() + future.result(timeout=.1) + @gen_test def test_async_future_gen(self): result = yield self.async_future() -- 2.47.2