docs: def listen(self):
          """
          Listen for clients.  This method causes the SimpleRPC object
          to switch to server mode.  One thread will be created for each
          client.
          """
  
          # Make sure we're in server mode
          if self.mode and self.mode != 'server':
              raise ValueError("%s is not in server mode" %
                               self.__class__.__name__)
          self.mode = 'server'
  
          # Obtain a listening socket
          serv = _create_server(self.host, self.port)
  
          # If we have too many errors, we want to bail out
          err_thresh = 0
          while True:
              # Accept a connection
              try:
                  sock, addr = serv.accept()
              except Exception as exc:
                  err_thresh += 1
                  if err_thresh >= self.max_err_thresh:
                      LOG.exception("Too many errors accepting "
                                    "connections: %s" % str(exc))
                      break
                  continue  # Pragma: nocover
  
              # Decrement error count on successful connections
              err_thresh = max(err_thresh - 1, 0)
  
              # Log the connection attempt
              LOG.info("Accepted connection from %s port %s" %
                       (addr[0], addr[1]))
  
              # And handle the connection
              eventlet.spawn_n(self.serve, self.connection_class(sock), addr)
  
          # Close the listening socket
          with utils.ignore_except():
              serv.close()