def run(property_dict) : pid = os.getpid() name = str(property_dict["key"]) #设置log输出logid fastlog.set_logid(name + "_" + str(pid)) #信号处理函数 signal.signal(signal.SIGTERM, onsignal_term) #根据配置中定义的队列服务器地址和key,连接队列服务器 get_queue_data = getqueuedata.GetQueuData(property_dict["servers"], str(property_dict["key"])) ##my data prepare ##------------------------START----------------------------------- #configure message cf = ConfigParser.ConfigParser() cf.readfp(open('./conf/rinMethod.ini','r')) c = configData.configData(cf) #data parser parser = stdServLogParser.stdServLogParser() #init timeManager data now = int(time.time()) t = timeManager.timeManager(c.timePeriod,now) serverMonitorInstance = serverMonitor.serverMonitor(c,t) ##------------------------END----------------------------------- #循环从队列中获取数据 get_null_count = 0 while True : #如果接收到kill信号,则会做如下退出处理 if break_flag : print "break while loop in " + name fastlog.info("break while loop in " + name) ##------------------------START----------------------------------- ##结束进程前的后续操作 ##------------------------END------------------------------------- break try : #从连接上的队列集群中,随机一台服务器中获取一条数据 #------------------------START----------------------------------- (data, server_addr) = get_queue_data.randomgetonedata() if data == None or data == "" : get_null_count += 1 if get_null_count >= 10 : get_null_count = 0 time.sleep(0.05) continue #fastlog.info("server: " + server_addr + " data: " + data) get_null_count = 0 #------------------------END------------------------------------- #------------------------START----------------------------------- #print data serverMonitorInstance.deal(parser.parse(data)) serverMonitorInstance.printStatsItemMsgToLog() parser.clear() #------------------------END------------------------------------- except Exception, e: fastlog.error("parser data Exception: " + str(e) + " data: " + str(data))
def test2(): import random import time import ConfigParser import timeManager import configData import stdServLogParser ##my data prepare ##------------------------START----------------------------------- #configure message cf = ConfigParser.ConfigParser() cf.readfp(open('./conf/rinMethod.ini','r')) c = configData.configData(cf) #data parser parser = stdServLogParser.stdServLogParser(c) #init timeManager data now = int(time.time()) t = timeManager.timeManager(int(c.timePeriod),now) #key processer effectMonitorInstance = effectMonitor(c,t) logTypeList = ["ERROR","INFO"] retCodeList = [-1,0,1,2,3] serverNodeNameList = ["10.33.96.33","10.33.96.32"] for i in range(1,200): msg = ".................%d stats item data................"%(i) effectMonitorInstance.logger.debug(msg) effectMonitorInstance.logger.debug("------------------------START------------------------------") createTime = random.randint(-4,10)+now logType = random.choice(logTypeList) retCode = random.choice(retCodeList) serverNodeName = random.choice(serverNodeNameList) stdTimeStr = time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(createTime)) data = "%s [%s.657] [logid:0] [tcpserver.cpp:152] | REQ_ID:10758252990973006192;SERV:Ranker;CMD:rank;RET_CODE:%d;FEAT_ROUTE:b_id_01->ct_id_01->pt_id_01->st_id_03;COST:3449(9-3421-3-13-1-2);EXT3:%s;"%(logType,stdTimeStr,retCode,serverNodeName) effectMonitorInstance.logger.debug(data) data = parser.parse(data) effectMonitorInstance.deal(data) parser.clear() effectMonitorInstance.printStatsItemMsgToLog() effectMonitorInstance.logger.debug("------------------------END------------------------------\n")