From: Nicolas Delaby Date: Sun, 17 Nov 2013 18:36:28 +0000 (+0100) Subject: Pass timeout argument to Future.result X-Git-Tag: v3.2.0b1~34^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=932dcc7dbe8fe20a3619e80183bb0f03f6473bd9;p=thirdparty%2Ftornado.git Pass timeout argument to Future.result --- 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()