#!/usr/bin/python # -*- coding:utf-8 _*- """ @author: pengtao @file: create_conf.py @time: 2020/04/24 """ import redis import json import pdb import natsort from operator import itemgetter redis_conf = {"host": "10.10.6.4", "port": "6379"} def get_redis(): game_data = list() r = redis.Redis(host=redis_conf['host'], port=redis_conf['port'], charset='utf8', db=redis_conf.get('db') or 0, decode_responses=True) key = 'game_info' data = r.hgetall(key) for key in data.keys(): recode = json.loads(data[key]) # "{\"areaId\":5002,\"combineTime\":946656000000,\"externalIp\":\"10.10.6.201\", # \"followerId\":0,\"gameRedisPort\":6382,\"gameRedsiHost\":\"10.10.6.201\", # \"hidden\":false,\"innerIp\":\"10.10.6.201\",\"openTime\":1586397600000, # \"pid\":\"union01\",\"status\":1,\"tcpPort\":9002,\"webPort\":19002, # \"worldId\":5002,\"worldName\":\"\xe5\x8f\x8c\xe7\xba\xbf1\xe6\x9c\x8d\"}" if int(recode['areaId']) < 4000: tt = dict() tt['serverid'] = recode['areaId'] tt['ip'] = recode['innerIp'] tt['redis_port'] = recode['gameRedisPort'] game_data.append(tt) return natsort.natsorted(game_data, key=itemgetter(*['ip'])) def write_csv(filename, data): with open(filename, 'w') as f: for line in data: one_line = f"{line['serverid']}\t{line['ip']}\t{line['redis_port']}\n" f.writelines(one_line) def sort_dict(data_d, key): import natsort from operator import itemgetter return natsort.natsorted(data_d, key=itemgetter(*[key])) def create_conf_work(): data = get_redis() new_data = sort_dict(data, 'serverid') filename = "1009.csv" write_csv(filename, new_data) if __name__ == '__main__': create_conf_work()