From 8115299860c7d4fcc1fc159fd93ccbc2a77eb48f Mon Sep 17 00:00:00 2001 From: Ben Darnell Date: Sun, 27 Sep 2015 20:10:49 -0400 Subject: [PATCH] Remove "IOLoop is closing" error. Callbacks added while the IOLoop is closing will now simply not be called (which has always been a possible fate for callbacks added just *before* the close). This exception has not proved to be very useful and sometimes has false positives that are tricky to work around, as seen in the linked issues. Closes #1491. Closes #1244. --- tornado/ioloop.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tornado/ioloop.py b/tornado/ioloop.py index a49e3ca9..195475ba 100644 --- a/tornado/ioloop.py +++ b/tornado/ioloop.py @@ -914,7 +914,7 @@ class PollIOLoop(IOLoop): # with other threads, or waking logic will induce a race. with self._callback_lock: if self._closing: - raise RuntimeError("IOLoop is closing") + return list_empty = not self._callbacks self._callbacks.append(functools.partial( stack_context.wrap(callback), *args, **kwargs)) @@ -927,7 +927,7 @@ class PollIOLoop(IOLoop): self._waker.wake() else: if self._closing: - raise RuntimeError("IOLoop is closing") + return # If we're on the IOLoop's thread, we don't need the lock, # since we don't need to wake anyone, just add the # callback. Blindly insert into self._callbacks. This is