'Handle one request at a time until shutdown.
Polls for shutdown every poll_interval seconds. Ignores
self.timeout. If you need to do periodic tasks, do them in
another thread.'

def serve_forever(self, poll_interval=0.1):

    self.__serving = True
    self.__is_shut_down.clear()
    while self.__serving:
        (r, w, e) = select.select([self.socket], [], [], poll_interval)
        if r:
            self._handle_request_noblock()
    self.__is_shut_down.set()
