def METHOD_NAME(self, msg: Message):
    logging.info("msg = {}".format(msg))
    # payload = msg.to_json()
    logging.info("pickle.dumps(msg) START")
    pickle_dump_start_time = time.time()
    msg_pkl = pickle.dumps(msg)
    MLOpsProfilerEvent.log_to_wandb({"PickleDumpsTime": time.time() - pickle_dump_start_time})
    logging.info("pickle.dumps(msg) END")
    receiver_id = msg.get_receiver_id()
    PORT_BASE = CommunicationConstants.GRPC_BASE_PORT
    # lookup ip of receiver from self.ip_config table
    receiver_ip = self.ip_config[str(receiver_id)]
    channel_url = "{}:{}".format(receiver_ip, str(PORT_BASE + receiver_id))
    channel = grpc.insecure_channel(channel_url, options=self.opts)
    stub = grpc_comm_manager_pb2_grpc.gRPCCommManagerStub(channel)
    request = grpc_comm_manager_pb2.CommRequest()
    logging.info("sending message to {}".format(channel_url))
    request.client_id = self.client_id
    request.message = msg_pkl
    tick = time.time()
    stub.sendMessage(request)
    MLOpsProfilerEvent.log_to_wandb({"Comm/send_delay": time.time() - tick})
    logging.debug("sent successfully")
    channel.close()