def safe_writeall(fd, b): total_written = 0 blen = len(b) while total_written != blen: towrite = blen - total_written written = _eintr_retry(write, fd, b[total_written:]) if written == towrite: break return total_written
def serve_forever( self, poll_interval=.5 ): self._BaseServer__is_shut_down.clear() try: while not self._BaseServer__shutdown_request: r,w,e = _eintr_retry( select.select, [self], [], [], poll_interval ) if self in r: self._handle_request_noblock() self.service_actions() # <<< Python3 socketserver added this finally: self._BaseServer__shutdown_request = False self._BaseServer__is_shut_down.set()
def safe_writeall_async(fd, b, on_not_ready): total_written = 0 blen = len(b) while total_written != blen: towrite = blen - total_written try: written = _eintr_retry(write, fd, b[total_written:]) except OSError as e: if e.errno != errno.EAGAIN: raise giveup = on_not_ready(total_written) if giveup: break written = 0 if written == towrite: break return total_written
def serve_forever(self, poll_interval=0.5): """Provide an override that can be shutdown from a request handler. The threading code in the BaseSocketServer class prevented this from working even for a non-threaded blocking server. """ try: while not self._shutdown_request: r, w, e = _eintr_retry(select.select, [self], [], [], poll_interval) if self in r: # reset watchdog self.watchdog = 0.0 self._handle_request_noblock() else: self.watchdog += poll_interval if self.watchdog > SAL_UDPSERVER_WATCHDOG_TIMOUT: self._shutdown_request = True finally: self._shutdown_request = False
def safe_recv(self, sz, flags=0): fd = self.fileno() return _eintr_retry(os.read, fd, sz)