code: def _gen_handle_tag(
      app_name: str, deployment_name: str, handle_id: str
  ):
      if app_name:
          return f"{app_name}#{deployment_name}#{handle_id}"
      else:
          return f"{deployment_name}#{handle_id}"
  
imports: import asyncio
  import concurrent.futures
  import threading
  import warnings
  from dataclasses import dataclass
  from typing import Any, AsyncIterator, Dict, Iterator, Optional, Tuple, Union
  import ray
  from ray import serve
  from ray._raylet import GcsClient, ObjectRefGenerator
  from ray.serve._private.common import DeploymentID, RequestProtocol
  from ray.serve._private.default_impl import create_cluster_node_info_cache
  from ray.serve._private.router import RequestMetadata, Router
  from ray.serve._private.usage import ServeUsageTag
  from ray.serve._private.utils import DEFAULT, get_current_actor_id, get_random_string, is_running_in_asyncio_loop
  from ray.util import metrics
  from ray.util.annotations import Deprecated, DeveloperAPI, PublicAPI
label_desc: Use image node_id 5 for calling the _DeploymentHandleBase obj's underlying member method code with example usage: obj._gen_handle_tag(app_name, deployment_name, handle_id) and returns: app_name, str, deployment_name, str, handle_id, deployment_name, str, handle_id