def METHOD_NAME(self, queued_channels_values):
    def get_channel_metadata(value):
        return (
            value.channel_id,
            value.channel_name,
            value.channel_type,
            value.channel_namespace,
        )
    queued_grouped_by_channel = {
        channel_metadata: list(values)
        for channel_metadata, values in groupby(
            sorted(queued_channels_values, key=get_channel_metadata),
            get_channel_metadata,
        )
    }
    channels_with_values = []
    for channel_metadata in queued_grouped_by_channel:
        channel_values = []
        for queued_value in queued_grouped_by_channel[channel_metadata]:
            channel_values.append(
                ChannelValue(
                    ts=queued_value.channel_value.ts,
                    x=queued_value.channel_value.x,
                    y=queued_value.channel_value.y,
                )
            )
        channels_with_values.append(ChannelIdWithValues(*channel_metadata, channel_values))
    try:
        self._experiment._send_channels_values(channels_with_values)
    except HTTPUnprocessableEntity as e:
        message = "Maximum storage limit reached"
        try:
            message = e.response.json()["message"]
        finally:
            _logger.warning("Failed to send channel value: %s", message)
    except (NeptuneException, IOError):
        _logger.exception("Failed to send channel value.")