for fd in self._fds:
if fd not in fds:
- self.io_loop.remove_handler(fd)
+ try:
+ self.io_loop.remove_handler(fd)
+ except (OSError, IOError), e:
+ if e[0] != errno.ENOENT:
+ raise
for fd, events in fds.iteritems():
old_events = self._fds.get(fd, None)
elif old_events != events:
try:
self.io_loop.update_handler(fd, events)
- except OSError, e:
+ except (OSError, IOError), e:
if e[0] == errno.ENOENT:
self.io_loop.add_handler(fd, self._handle_events,
events)
self._events.pop(fd, None)
try:
self._impl.unregister(fd)
- except OSError:
+ except (OSError, IOError):
logging.debug("Error deleting fd from IOLoop", exc_info=True)
def start(self):
self._handlers[fd](fd, events)
except KeyboardInterrupt:
raise
- except OSError, e:
+ except (OSError, IOError), e:
if e[0] == errno.EPIPE:
# Happens when the client closes the connection
pass