def process_response(client, req, seqno, method): global total_ack, stat_count, err sign_parameters = { P_FORMAT: 'json', P_APPKEY: g_appkey, P_SIGN_METHOD: "md5", P_VERSION: '2.0', P_TIMESTAMP: str(long(time.time() * 1000)), P_PARTNER_ID: SYSTEM_GENERATE_VERSION, P_API: method_hash[method], } try: uuid = req['uuid'] del req['uuid'] except KeyError: uuid = None if method == 2: if req['start_time'] == '': req['start_time'] = req['release_time'] sign_parameters.update(req) sign_parameters[P_SIGN] = sign(g_secret, sign_parameters) params_url = URL(N_REST) params_url.query = sign_parameters try: response = http.get(params_url.request_uri) data = response.read() logger.info('response data=%s', data) total_ack += 1 stat_count += 1 assert response.status_code == 200 hash1 = json.loads(data) except socket.timeout: logger.error('response timeout') hash1 = {'error_response': None} err += 1 except: #timeout: logger.error(traceback.format_exc()) #data = {'err', traceback.format_exc()} hash1 = {'error_response': None} err += 1 #logger.debug('data=%s, client=%s, conn_list=%s', data, client, conn_list) #data = marshal.dumps(data) if method == 2: return if 'error_response' in hash1: data = {} #{'call_in_no':None} else: try: data = hash1['alibaba_aliqin_secret_call_control_response'] try: play_code = data['play_code'] except KeyError: play_code = None data['play_code'] = play_code except KeyError: logger.error(traceback.format_exc()) data = {} #{'call_in_no': None} if uuid: data['uuid'] = uuid data = marshal.dumps(data) if client in conn_list: client.sendall(struct.pack('!LL', len(data), seqno) + data) elif conn_list: n = len(conn_list) conn_list[hash(seqno) % n].sendall(struct.pack('!LL', len(data), seqno) + data) else: logger.error("No client connection!")