parameters: (
          self,
          timeout: int = 60,
          num_retries: int = 3,
          stderr: Union[int, TextIO, None] = None,
      )
docstring: Starts the server, and waits for it to be ready. When this function
          returns the sever is ready to take requests.
  
          Args:
              timeout: time (in seconds) to wait for the server to be ready
                  before giving up.
              num_retries: number of retries to start the server. Each retry
                  will wait for max ``timeout`` before considering it as failed.
              stderr: the standard error file handle. Valid values are
                  `subprocess.PIPE`, `subprocess.DEVNULL`, an existing file
                  descriptor (a positive integer), an existing file object, and
                  `None`.
  
          Raises:
              TimeoutError: if the server is not ready within the specified timeout
docstring_summary: Starts the server, and waits for it to be ready. When this function
          returns the sever is ready to take requests.
docstring_tokens: Starts the server and waits for it to be ready . When this function returns the sever is ready to take requests .
function: def start(
          self,
          timeout: int = 60,
          num_retries: int = 3,
          stderr: Union[int, TextIO, None] = None,
      ) -> None:
          """
          Starts the server, and waits for it to be ready. When this function
          returns the sever is ready to take requests.
  
          Args:
              timeout: time (in seconds) to wait for the server to be ready
                  before giving up.
              num_retries: number of retries to start the server. Each retry
                  will wait for max ``timeout`` before considering it as failed.
              stderr: the standard error file handle. Valid values are
                  `subprocess.PIPE`, `subprocess.DEVNULL`, an existing file
                  descriptor (a positive integer), an existing file object, and
                  `None`.
  
          Raises:
              TimeoutError: if the server is not ready within the specified timeout
          """
          curr_retries = 0
          while True:
              try:
                  data_dir = os.path.join(self._base_data_dir, str(curr_retries))
                  os.makedirs(data_dir, exist_ok=True)
                  return self._start(data_dir, timeout, stderr)
              except Exception as e:
                  curr_retries += 1
                  stop_etcd(self._etcd_proc)
                  log.warning(
                      f"Failed to start etcd server, got error: {str(e)}, retrying"
                  )
                  if curr_retries >= num_retries:
                      shutil.rmtree(self._base_data_dir, ignore_errors=True)
                      raise
          atexit.register(stop_etcd, self._etcd_proc, self._base_data_dir)
function_tokens: def start ( self , timeout : int = 60 , num_retries : int = 3 , stderr : Union [ int , TextIO , None ] = None , ) -> None : curr_retries = 0 while True : try : data_dir = os . path . join ( self . _base_data_dir , str ( curr_retries ) ) os . makedirs ( data_dir , exist_ok = True ) return self . _start ( data_dir , timeout , stderr ) except Exception as e : curr_retries += 1 stop_etcd ( self . _etcd_proc ) log . warning ( f"Failed to start etcd server, got error: {str(e)}, retrying" ) if curr_retries >= num_retries : shutil . rmtree ( self . _base_data_dir , ignore_errors = True ) raise atexit . register ( stop_etcd , self . _etcd_proc , self . _base_data_dir )