code: def process_request_thread(self, mainthread):
          
          life_time   = time.time()
          nb_requests = 0
  
          while not mainthread.killed():
              if self.max_life_time > 0:
                  if (time.time() - life_time) >= self.max_life_time:
                      mainthread.add_worker(1)
                      return
                  try:
                      SocketServer.ThreadingTCPServer.process_request_thread(self, *self.requests.get(True, 0.5))
                  except Queue.Empty:
                      continue
              else:
                  SocketServer.ThreadingTCPServer.process_request_thread(self, *self.requests.get())
  
              LOG.debug("nb_requests: %d, max_requests: %d", nb_requests, self.max_requests)
              nb_requests += 1
  
              if self.max_requests > 0 and nb_requests >= self.max_requests:
                  mainthread.add_worker(1)
                  return
docs: obtain request from queue instead of directly from server socket