class_docstr: An async implementation of a gRPC server.
code: def interceptors(self) -> Interceptors:
      # Note that order of interceptors is important here.
  
      from ...grpc.interceptors.opentelemetry import (
          AsyncOpenTelemetryServerInterceptor,
      )
  
      interceptors: Interceptors = [AsyncOpenTelemetryServerInterceptor]
  
      if BentoMLContainer.api_server_config.metrics.enabled.get():
          from ...grpc.interceptors.prometheus import (
              PrometheusServerInterceptor,
          )
  
          interceptors.append(PrometheusServerInterceptor)
  
      if (
          BentoMLContainer.api_server_config.logging.access.enabled.get()
      ):
          from ...grpc.interceptors.access import (
              AccessLogServerInterceptor,
          )
  
          access_logger = logging.getLogger("bentoml.access")
          if access_logger.getEffectiveLevel() <= logging.INFO:
              interceptors.append(AccessLogServerInterceptor)
  
      # add users-defined interceptors.
      interceptors.extend(self.bento_service.interceptors)
  
      return interceptors
  
imports: from __future__ import annotations
  import asyncio
  import inspect
  import logging
  import os
  import sys
  import typing
  from concurrent.futures import ThreadPoolExecutor
  from functools import cached_property
  from functools import partial
  from typing import TYPE_CHECKING
  from simple_di import Provide
  from simple_di import inject
  from ...grpc.utils import LATEST_PROTOCOL_VERSION
  from ...grpc.utils import import_generated_stubs
  from ...grpc.utils import import_grpc
  from ...grpc.utils import load_from_file
  from ..configuration.containers import BentoMLContainer
  from ..context import ServiceContext
  from ..utils import LazyLoader
label_desc: Use image node_id 3 for calling the Server obj's underlying member method code with example usage: obj.interceptors() and returns: interceptors