예제 #1
0
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))
예제 #2
0
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")