code: def create_server(
          max_workers: int,
          options: Optional[List[Tuple[str, Any]]] = None,
          interceptors: Optional[List[grpc.ServerInterceptor]] = None,
  ) -> grpc.Server:
      
      # The list of possible options is available here:
      # https://grpc.io/grpc/core/group__grpc__arg__keys.html
      options = (options or []) + [
          ("grpc.max_send_message_length", grpc_max_msg_size),
          ("grpc.max_receive_message_length", grpc_max_msg_size),
      ]
      interceptors = [base.ServerInterceptorWrapper(i)
                      for i in (interceptors or [])]
      server = grpc.server(ThreadPoolExecutor(max_workers=max_workers),
                           options=options, interceptors=interceptors)
  
      for i in interceptors:
          i.bind(server)
  
      return server
docs: Creates a gRPC server
  
      The gRPC server is created with the provided options and intercepts each
      incoming RPCs via the provided interceptors.
  
      The created server is configured with the following default options:
          - "grpc.max_send_message_length": 100MB,
          - "grpc.max_receive_message_length": 100MB.
  
      :param max_workers: the maximum number of workers to use in the underlying
          futures.ThreadPoolExecutor to be used by the Server to execute RPC
          handlers.
      :param options: optional list of key-value pairs to configure the channel.
      :param interceptors: optional list of server interceptors.
      :returns: a gRPC server.