你可以尝试以下修改代码来实现对msg_data的格式处理:

for msg_type_temp in msg_type:
    msg_type_temp = str(msg_type_temp)
    for dsn in sn_list:
        dsn = str(dsn)
        msg_data = [{'cpu_manage_usage': u'10', 'cpu_dp_avg_usage': u'4', 'coming_time': '2023-09-13 00:00:17', 'cpu': u'6'}, {'cpu_manage_usage': u'11', 'cpu_dp_avg_usage': u'5', 'coming_time': '2023-09-13 00:11:18', 'cpu': u'7'}, {'cpu_manage_usage': u'11', 'cpu_dp_avg_usage': u'5', 'coming_time': '2023-09-13 00:14:18', 'cpu': u'7'}]
        
        if msg_type_temp not in ret_data['data'].get(dsn, {}):
            ret_data['data'].setdefault(dsn, {}).setdefault(msg_type_temp, [])
            ret_data['data'][dsn].setdefault('interval', '')
            ret_data['data'][dsn].setdefault('data_disk', [])

        coming_time = []
        for item in msg_data:
            coming_time.append(item.get('coming_time'))
            ret_data['data'][dsn][msg_type_temp].append(float(item.get(msg_type_temp, 0)))
            ret_data['data'][dsn]['{0}_coming_time'.format(msg_type_temp)] = coming_time

            if msg_type_temp == 'disk':
                ret_data['data'][dsn]['data_disk'].append(item.get('data_disk_usage'))
                ret_data['data'][dsn]['data_disk_coming_time'] = coming_time

        ret_data['data'][dsn]['interval'] = '1h'
        logger.info("get_cpumemdisk_message ret_data length:{0}!".format(len(ret_data['data'][dsn][msg_type_temp])))

这样修改后,ret_data的值将为:

{
    "code": 0,
    "message": "success",
    "data": {
        "48443f16f16c9cede62efa44a821dfa00c4013f1": {
            "cpu": [6.0, 7.0, 7.0],
            "cpu_coming_time": [
                "2023-09-13 00:00:17",
                "2023-09-13 00:11:18",
                "2023-09-13 00:14:18"
            ],
            "cpu_manage_usage": [10.0, 11.0, 11.0],
            "cpu_dp_avg_usage": [4.0, 5.0, 5.0],
            "interval": "1h"
        }
    }
}
Python 代码优化:使用 msg_data 处理数据,将数据整理成特定格式

原文地址: https://www.cveoy.top/t/topic/l3so 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录