'Called by IOLoop when there is activity on one of our
file descriptors.'

def _handle_events(self, fd, events):

    action = 0
    if (events & ioloop.IOLoop.READ):
        action |= pycurl.CSELECT_IN
    if (events & ioloop.IOLoop.WRITE):
        action |= pycurl.CSELECT_OUT
    while True:
        try:
            (ret, num_handles) = self._multi.socket_action(fd, action)
        except pycurl.error as e:
            ret = e.args[0]
        if (ret != pycurl.E_CALL_MULTI_PERFORM):
            break
    self._finish_pending_requests()
