code: def http_client(self) -> tritonhttpclient.InferenceServerClient:
      from ...configuration import get_debug_mode
  
      if self._http_client_cache is None:
          # TODO: configuration customization
          try:
              self._http_client_cache = (
                  tritonhttpclient.InferenceServerClient(
                      url=BentoMLContainer.remote_runner_mapping.get()[
                          self.runner.name
                      ],
                      verbose=get_debug_mode(),
                  )
              )
          except Exception:
              logger.error(
                  "Failed to instantiate Triton Inference Server client for '%s', see details:",
                  self.runner.name,
              )
              logger.error(traceback.format_exc())
              raise
      return self._http_client_cache
  
imports: from __future__ import annotations
  import asyncio
  import functools
  import json
  import logging
  import os
  import pickle
  import time
  import traceback
  import typing
  from json.decoder import JSONDecodeError
  from urllib.parse import urlparse
  from ....exceptions import RemoteException
  from ....exceptions import ServiceUnavailable
  from ...configuration.containers import BentoMLContainer
  from ...context import component_context
  from ...utils import LazyLoader
  from ...utils.uri import uri_to_path
  from ..container import Payload
  from ..utils import PAYLOAD_META_HEADER
  from ..utils import Params
  from .None import RunnerHandle
label_desc: Use image node_id 2 for calling the TritonRunnerHandle obj's underlying member method code with example usage: obj.http_client() and returns: self