code: def _wait_service_ready(self):
      self._mars_endpoint = f"{self._slb_endpoint}/mars/{self._namespace}/{self._job_name}-webservice-0"
      logger.warning(f"Kubedl job name: {self._job_name}")
      check_start_time = time.time()
      worker_count_url = (
          self._mars_endpoint + "/api/worker?action=count"
      )
      while True:
          try:
              if (
                  self._timeout
                  and time.time() - check_start_time > self._timeout
              ):
                  raise TimeoutError("Check Mars service start timeout")
  
              if not self._verify_ssl:
                  try:
                      import urllib3
  
                      urllib3.disable_warnings(
                          urllib3.exceptions.InsecureRequestWarning
                      )
                  except ImportError:  # pragma: no cover
                      pass
  
              api, version = KUBEDL_API_VERSION.rsplit("/", 1)
              service_obj = (
                  self._custom_api.get_namespaced_custom_object_status(
                      api,
                      version,
                      self._namespace,
                      KUBEDL_MARS_PLURAL,
                      self._job_name,
                  )
              )
              if (
                  len(
                      service_obj.get("status", dict()).get(
                          "conditions", []
                      )
                  )
                  > 0
              ):
                  if (
                      service_obj["status"]["conditions"][-1]["type"]
                      == "Failed"
                  ):
                      raise SystemError(
                          service_obj["status"]["conditions"][-1][
                              "message"
                          ]
                      )
  
              with warnings.catch_warnings():
                  warnings.filterwarnings(
                      "ignore", message="Unverified HTTPS request"
                  )
                  resp = requests.get(
                      worker_count_url,
                      timeout=1,
                      verify=self._verify_ssl,
                  )
  
              if int(resp.text) >= self._min_worker_num:
                  logger.warning(
                      f"Web endpoint started at {self._mars_endpoint}"
                  )
                  break
          except (requests.Timeout, ValueError) as ex:
              if not isinstance(ex, requests.Timeout):
                  time.sleep(0.1)
              pass
  
imports: import logging
  import time
  import warnings
  import requests
  from ...session import new_session
  from .config import MarsSchedulerSpecConfig, MarsWorkerSpecConfig, MarsWebSpecConfig, MarsJobConfig
label_desc: Use image node_id 5 for calling the KubeDLCluster obj's underlying member method code with example usage: obj._wait_service_ready() without return types