

def run(self):
    events = []
    while (not self._stopping):
        asap = False
        try:
            events = self.poll(TIMEOUT_PRECISION)
        except (OSError, IOError) as e:
            if (errno_from_exception(e) in (errno.EPIPE, errno.EINTR)):
                asap = True
                logging.debug('poll:%s', e)
            else:
                logging.error('poll:%s', e)
                import traceback
                traceback.print_exc()
                continue
        for (sock, fd, event) in events:
            handler = self._fdmap.get(fd, None)
            if (handler is not None):
                handler = handler[1]
                try:
                    handler.handle_event(sock, fd, event)
                except (OSError, IOError) as e:
                    shell.print_exception(e)
        now = time.time()
        if (asap or ((now - self._last_time) >= TIMEOUT_PRECISION)):
            for callback in self._periodic_callbacks:
                callback()
            self._last_time = now

dataset/ETHPy150Open ziggear/shadowsocks/shadowsocks/eventloop.py EventLoop.run/original