def run(self): while not Thread.aborted(): sleep(self.INTERVAL) try: reply = protocol.Ping(self.pid) reply.send(self.pipe) except PipeBroken: sys.exit(1)
def _drain(self): """ Drain the queue. """ self.is_open = False while not Thread.aborted(): try: request = self.queue.get(timeout=1) self.commit(request.sn) except Empty: break
def get(self): """ Get the next pending request to be dispatched. Blocks until a request is available. :return: The next pending request. :rtype: Document """ while not Thread.aborted(): try: return self.queue.get(timeout=10) except Empty: pass
def _fn(reader, timeout=None): delay = DELAY timer = float(timeout or 0) while not Thread.aborted(): message = fn(reader, timer) if message: return message if timer > 0: sleep(delay) timer -= delay if delay < MAX_DELAY: delay *= DELAY_MULTIPLIER else: break
def _fn(messenger, *args, **kwargs): repair = lambda: None while not Thread.aborted(): try: repair() return fn(messenger, *args, **kwargs) except ChannelError, e: if e.code != 404: sleep(DELAY) repair = messenger.repair else: raise NotFound(*e.args) except CONNECTION_EXCEPTIONS: sleep(DELAY) repair = messenger.repair
def _fn(messenger, *args, **kwargs): repair = lambda: None while not Thread.aborted(): try: repair() return fn(messenger, *args, **kwargs) except LinkDetached, le: if le.condition != NOT_FOUND: sleep(DELAY) repair = messenger.repair else: raise NotFound(*le.args) except ConnectionException: sleep(DELAY) repair = messenger.repair
def inner(connection): if connection.retry: retries = RETRIES else: retries = 0 delay = DELAY url = connection.url while not Thread.aborted(): try: log.info('connecting: %s', url) impl = fn(connection) log.info('connected: %s', url) return impl except exception, e: log.error('connect: %s, failed: %s', url, e) if retries > 0: log.info('retry in %d seconds', delay) sleep(delay) if delay < MAX_DELAY: delay *= DELAY_MULTIPLIER retries -= 1 else: raise