class_docstr: gRPC options for the proxies. Supported fields:
  
  Args:
      port (int):
          Port for gRPC server if started. Default to 9000. Cannot be
          updated once Serve has started running. Serve must be shut down and
          restarted with the new port instead.
      grpc_servicer_functions (List[str]):
          List of import paths for gRPC `add_servicer_to_server` functions to add to
          Serve's gRPC proxy. Default to empty list, which means no gRPC methods will
          be added and no gRPC server will be started. The servicer functions need to
          be importable from the context of where Serve is running.
docstr: Return a list of callable functions from the grpc_servicer_functions.
  
  If the function is not callable or not found, it will be ignored and a warning
  will be logged.
docstr_tok: ["Return","a","list","of","callable","functions","from","the","grpc_servicer_functions",".","If","the","function","is","not","callable","or","not","found",",","it","will","be","ignored","and","a","warning","will","be","logged","."]
code: def grpc_servicer_func_callable(self) -> List[Callable]:
      """Return a list of callable functions from the grpc_servicer_functions.
  
      If the function is not callable or not found, it will be ignored and a warning
      will be logged.
      """
      callables = []
      for func in self.grpc_servicer_functions:
          try:
              imported_func = import_attr(func)
              if callable(imported_func):
                  callables.append(imported_func)
              else:
                  message = (
                      f"{func} is not a callable function! Please make sure "
                      "the function is imported correctly."
                  )
                  raise ValueError(message)
          except ModuleNotFoundError as e:
              message = (
                  f"{func} can't be imported! Please make sure there are no typo "
                  "in those functions. Or you might want to rebuild service "
                  "definitions if .proto file is changed."
              )
              raise ModuleNotFoundError(message) from e
  
      return callables
  
imports: import logging
  import warnings
  from enum import Enum
  from typing import Any, Callable, List, Optional, Union
  from ray import cloudpickle
  from ray._private.pydantic_compat import BaseModel, NonNegativeFloat, NonNegativeInt, PositiveFloat, PositiveInt, validator
  from ray._private.utils import import_attr
  from ray.serve._private.constants import DEFAULT_AUTOSCALING_POLICY, DEFAULT_GRPC_PORT, DEFAULT_HTTP_HOST, DEFAULT_HTTP_PORT, DEFAULT_UVICORN_KEEP_ALIVE_TIMEOUT_S, SERVE_LOGGER_NAME
  from ray.util.annotations import Deprecated, PublicAPI
label_desc: Use image node_id 1 for calling the gRPCOptions obj's underlying member method code with example usage: obj.grpc_servicer_func_callable() and returns: callables