diff --git a/tornado/locks.py b/tornado/locks.py index 3b1c08da9..d05c921ff 100644 --- a/tornado/locks.py +++ b/tornado/locks.py @@ -122,7 +122,7 @@ def wait( """ waiter: Future[bool] = Future() self._waiters.append(waiter) - if timeout: + if timeout is not None: def on_timeout() -> None: if not waiter.done(): @@ -421,7 +421,7 @@ def acquire( waiter.set_result(_ReleasingContextManager(self)) else: self._waiters.append(waiter) - if timeout: + if timeout is not None: def on_timeout() -> None: if not waiter.done(): diff --git a/tornado/queues.py b/tornado/queues.py index 41766eef7..89403d7a3 100644 --- a/tornado/queues.py +++ b/tornado/queues.py @@ -55,7 +55,7 @@ class QueueFull(Exception): def _set_timeout(future: Future, timeout: None | float | datetime.timedelta) -> None: - if timeout: + if timeout is not None: def on_timeout() -> None: if not future.done(): diff --git a/tornado/test/queues_test.py b/tornado/test/queues_test.py index efbb1c319..c29eea9c0 100644 --- a/tornado/test/queues_test.py +++ b/tornado/test/queues_test.py @@ -117,6 +117,14 @@ def test_get_timeout(self): q.put_nowait(0) self.assertEqual(0, (yield get)) + @gen_test + def test_get_zero_timeout(self): + q: queues.Queue[int] = queues.Queue() + with self.assertRaises(TimeoutError): + yield q.get(timeout=timedelta(seconds=0)) + with self.assertRaises(TimeoutError): + yield q.get(timeout=0) + @gen_test def test_get_timeout_preempted(self): q: queues.Queue[int] = queues.Queue()