class_docstr: Manages a list of grpc connections.
  
  :param logger: the logger to use
  :param compression: The compression algorithm to be used by this GRPCConnectionPool when sending data to GRPC
docstr: Sends a discover Endpoint call to target.
  
  :param deployment: name of the Jina deployment to send the request to
  :param head: If True it is send to the head, otherwise to the worker pods
  :param shard_id: Send to a specific shard of the deployment, ignored for polling ALL
  :param timeout: timeout for sending the requests
  :param retries: number of retries per gRPC call. If <0 it defaults to max(3, num_replicas)
  :return: coroutine items to send call
docstr_tok: ["Sends","a","discover","Endpoint","call","to","target",".",":","param","deployment",":","name","of","the","Jina","deployment","to","send","the","request","to",":","param","head",":","If","True","it","is","send","to","the","head",",","otherwise","to","the","worker","pods",":","param","shard_id",":","Send","to","a","specific","shard","of","the","deployment",",","ignored","for","polling","ALL",":","param","timeout",":","timeout","for","sending","the","requests",":","param","retries",":","number","of","retries","per","gRPC","call",".","If","<","0","it","defaults","to","max","(","3",",","num_replicas",")",":","return",":","coroutine","items","to","send","call"]
code: def send_discover_endpoint(
      self,
      deployment: str,
      head: bool = True,
      shard_id: Optional[int] = None,
      timeout: Optional[float] = None,
      retries: Optional[int] = -1,
  ):
      """Sends a discover Endpoint call to target.
  
      :param deployment: name of the Jina deployment to send the request to
      :param head: If True it is send to the head, otherwise to the worker pods
      :param shard_id: Send to a specific shard of the deployment, ignored for polling ALL
      :param timeout: timeout for sending the requests
      :param retries: number of retries per gRPC call. If <0 it defaults to max(3, num_replicas)
      :return: coroutine items to send call
      """
      connection_list = self._connections.get_replicas(
          deployment, head, shard_id, True
      )
      if connection_list:
          return self._send_discover_endpoint(
              timeout=timeout,
              connection_list=connection_list,
              retries=retries,
          )
      else:
          self._logger.debug(
              f"no available connections for deployment {deployment} and shard {shard_id}"
          )
          return None
  
imports: import asyncio
  from typing import TYPE_CHECKING, Dict, List, Optional, Sequence, Set, Tuple, Union, AsyncGenerator
  import grpc
  from grpc.aio import AioRpcError
  from jina.constants import __default_endpoint__
  from jina.enums import PollingType
  from jina.excepts import InternalNetworkError
  from jina.importer import ImportExtensions
  from jina.logging.logger import JinaLogger
  from jina.proto import jina_pb2
  from jina.serve.helper import format_grpc_error
  from jina.serve.networking.connection_pool_map import _ConnectionPoolMap
  from jina.serve.networking.connection_stub import create_async_channel_stub
  from jina.serve.networking.instrumentation import _NetworkingHistograms, _NetworkingMetrics
  from jina.serve.networking.replica_list import _ReplicaList
  from jina.serve.networking.utils import DEFAULT_MINIMUM_RETRIES
  from jina.types.request import Request
  from jina.types.request.data import SingleDocumentRequest
label_desc: Use image node_id 3 for calling the GrpcConnectionPool obj's underlying member method code with example usage: obj.send_discover_endpoint(deployment, head, shard_id, timeout, retries) and returns: self, None