def func(): t = Timeout(0.01) t.start() try: evergreen.sleep(10) except Timeout as e: self.assertTrue(t is e)
def acquire(self, blocking=True, timeout=None): if self._counter > 0: self._counter -= 1 return True elif not blocking: return False else: current = evergreen.current.task self._waiters.add(current) timer = Timeout(timeout) timer.start() loop = evergreen.current.loop try: while self._counter <= 0: loop.switch() except Timeout as e: if e is timer: return False raise else: self._counter -= 1 return True finally: timer.cancel() self._waiters.discard(current)
def connect(self, address): if self.timeout == 0.0: return self._sock.connect(address) sock = self._sock if isinstance(address, tuple): r = getaddrinfo(address[0], address[1], sock.family, sock.type, sock.proto) address = r[0][-1] timer = Timeout(self.timeout, timeout('timed out')) timer.start() try: while True: err = sock.getsockopt(SOL_SOCKET, SO_ERROR) if err: raise error(err, os.strerror(err)) result = sock.connect_ex(address) if not result or result == EISCONN: break elif (result in (EWOULDBLOCK, EINPROGRESS, EALREADY)) or (result == EINVAL and is_windows): self._io.wait_write() else: raise error(result, os.strerror(result)) finally: timer.cancel()
def sleep(): with Timeout(0.01, FooTimeout): evergreen.sleep(10)
def sleep(): with Timeout(-1): evergreen.sleep(0.01)
def sleep(): with Timeout(None): evergreen.sleep(0.01)