<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _on_report(self, sequence, topic, message):
 """Process a report received from a device. Args: sequence (int):
 The sequence number of the packet received topic (string):
 The topic this message was received on message (dict):
 The message itself """


        try:
            conn_key = self._find_connection(topic)
            conn_id = self.conns.get_connection_id(conn_key)
        except ArgumentError:
            self._logger.warn("Dropping report message that does not correspond with a known connection, topic=%s", topic)
            return

        try:
            rep_msg = messages.ReportNotification.verify(message)

            serialized_report = {}
            serialized_report['report_format'] = rep_msg['report_format']
            serialized_report['encoded_report'] = rep_msg['report']
            serialized_report['received_time'] = datetime.datetime.strptime(rep_msg['received_time'].encode().decode(), "%Y%m%dT%H:%M:%S.%fZ")

            report = self.report_parser.deserialize_report(serialized_report)
            self._trigger_callback('on_report', conn_id, report)
        except Exception:
            self._logger.exception("Error processing report conn_id=%d", conn_id)