code: def _create_request_counter(cls, app_name, deployment_name):
      return metrics.Counter(
          "serve_handle_request_counter",
          description=(
              "The number of handle.remote() calls that have been "
              "made on this handle."
          ),
          tag_keys=("handle", "deployment", "route", "application"),
      ).set_default_tags(
          # TODO(zcin): Separate deployment_id into deployment and application tags
          {
              "handle": cls._gen_handle_tag(
                  app_name,
                  deployment_name,
                  handle_id=get_random_string(),
              ),
              "deployment": deployment_name,
              "application": app_name,
          }
      )
  
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 6 for calling the _DeploymentHandleBase obj's underlying member method code with example usage: obj._create_request_counter(cls, app_name, deployment_name) and returns: metrics