def serve_forever(self, poll_interval=0.5):
     self._BaseServer__is_shut_down.clear()
     try:
         while not self._BaseServer__shutdown_request:
             r, w, e = SocketServer._eintr_retry(
                 select.select, [self], [], [], poll_interval)
             if self in r:
                 self._handle_request_noblock()
             self.serve_cleanup()
     finally:
         self._BaseServer__shutdown_request = False
         self._BaseServer__is_shut_down.set()
Exemple #2
0
 def serve_forever(self, poll_interval=0.5):
     self.__is_shut_down.clear()
     try:
         while not self.__shutdown_request:
             # XXX: Consider using another file descriptor or
             # connecting to the socket to wake this up instead of
             # polling. Polling reduces our responsiveness to a
             # shutdown request and wastes cpu at all other times.
             r, w, e = SocketServer._eintr_retry(select.select, [self], [],
                                                 [], poll_interval)
             if self in r:
                 self._handle_request_noblock()
     finally:
         self.__shutdown_request = False
         self.__is_shut_down.set()
Exemple #3
0
 def serve_forever(self, poll_interval=0.5, tick_func=None):
     """
     Override SocketServer.serve_forever to allow other things to happen.
     """
     if self.__is_shut_down is None:
         return
     self.__is_shut_down.clear()
     try:
         while not (self.__shutdown_request or mailpile.util.QUITTING):
             # FIXME: Let's add a global FD to interrupt this, so we can
             #        be more responsive AND lengthen our timeouts.
             r, w, e = SocketServer._eintr_retry(select.select, [self], [],
                                                 [], poll_interval)
             if self in r:
                 self._handle_request_noblock()
             elif not (mailpile.util.QUITTING or tick_func is None):
                 tick_func(self)
     finally:
         self.__shutdown_request = False
         if self.__is_shut_down is not None:
             self.__is_shut_down.set()