def callback(self, action, res_content, comm_params): """协议处理完后的回调(生成响应结果,写统计日志) 参数: - action:子协议动作 - res_content:子协议包响应结果 - comm_params:通传参数 返回:None """ try: # print 'callback' res_action = action[3:] self.res_packages[res_action] = res_content self.res_comm_params[res_action] = comm_params self.dealing = self.dealing - 1 if self.dealing == 0: # 处理完所有action res_package = packet.RspPacket() res_package.mask = 0 res_package.rescode = 0 res_package.resmsg = '' for each_action in self.req_actions: res_package.action.append('Rsp' + each_action) res_package.params.append(self.res_packages[each_action]) self.res_comm_params[each_action].update({'resaction': 'Rsp' + each_action}) stats.comm_stat_record(self.res_comm_params[each_action]) # 写统计日志 self.finish_fuc(res_package.SerializeToString()) except Exception, e: self.logger.write('callback', e)
""" action_len = len(self.req_packet.action) self.dealing = action_len self.finish_fuc = finish_fuc err_num = 0 for i in xrange(action_len): action = self.req_packet.action[i] params = self.req_packet.params[i] self.req_actions.append(action[3:]) try: self.com_param['reqaction'] = action # 用于记录统计数据 self.com_param['reqactno'] = i + 1 handler = self.proto_map[action]() # 初始化协议处理器 handler.action = action yield handler.deal(params, self.com_param, self.callback) except Exception, e: self.logger.write('run', e) err_num = err_num + 1 if err_num == action_len: # 整体失败 res_package = packet.RspPacket() res_package.mask = 0 res_package.rescode = 1 res_package.resmsg = u'整体失败' self.com_param['rescode'] = 1 self.com_param['resaction'] = 'RspPacket' stats.comm_stat_record(self.com_param) # 写统计日志 finish_fuc(res_package.SerializeToString())