def nlpir_parser(standard_name_chn, server_ip, server_port): result_list = [] try: p = {'inputwords': standard_name_chn} url_values = urllib.parse.urlencode(p) url_values = url_values.encode(encoding='UTF8') req = urllib.request.Request( 'http://' + server_ip + ':' + server_port + "/nlpirService", url_values) res = urllib.request.urlopen(req, timeout=80) response = res.read() if response is not None and len(response) > 0: response_list = response.decode('utf-8').split('##') if len(response_list) == 3 and len(response_list[2]) != '': chn_name_list = response_list[2].split('&&') result_list = [x for x in chn_name_list if len(x) > 0] except socket.timeout as e: log.e(e) except HTTPError as e: log.d(e) except URLError as e: log.d(e) except Exception as ex: log.e(ex) return result_list
def saveLogIntoExp_ErrDB(userId,req_content,err_exp_type,t_req ,sys_err_exp_desc ): try: con = PostgreSQLConnector() sql="insert into mj_log_system_err_exp_info (user_id,request_content,err_exp_type,request_time,sys_err_exp_desc,flag)\ values('%s','%s','%s','%s','%s','0')"%(userId,req_content,err_exp_type,t_req ,sys_err_exp_desc); con.executeUpdateDB(sql); except Exception as e: con.rollback() log.e(e)
def saveLogIntoBaseDB(user_name,data_type,data_content,log_time): try: con = PostgreSQLConnector() sql="insert into mj_log_base_info (user_name,data_type,data_content,log_time ,flag)\ values('%s','%s','%s','%s','0')"%(user_name,data_type,data_content,log_time ); con.executeUpdateDB(sql); except Exception as e: con.rollback() log.e(e)
def saveLogIntoBaseDB(user_name, data_type, data_content, log_time): try: con = PostgreSQLConnector() sql = "insert into mj_log_base_info (user_name,data_type,data_content,log_time ,flag)\ values('%s','%s','%s','%s','0')" % (user_name, data_type, data_content, log_time) con.executeUpdateDB(sql) except Exception as e: con.rollback() log.e(e)
def saveLogIntoExp_ErrDB(userId, req_content, err_exp_type, t_req, sys_err_exp_desc): try: con = PostgreSQLConnector() sql = "insert into mj_log_system_err_exp_info (user_id,request_content,err_exp_type,request_time,sys_err_exp_desc,flag)\ values('%s','%s','%s','%s','%s','0')" % ( userId, req_content, err_exp_type, t_req, sys_err_exp_desc) con.executeUpdateDB(sql) except Exception as e: con.rollback() log.e(e)
def get_pinyin(self, chars=u"输入"): result = [] try: for char in chars: key = "%X" % ord(char) try: result.append(self.dict[key].split(" ")[0].strip()[:-1].lower()) except: result.append(char) except Exception as e: log.e(e) return self.splitter.join(result)
def get_pinyin(self, chars=u"输入"): result = [] try: for char in chars: key = "%X" % ord(char) try: result.append( self.dict[key].split(" ")[0].strip()[:-1].lower()) except: result.append(char) except Exception as e: log.e(e) return self.splitter.join(result)
def nlpir_parser(standard_name_chn, server_ip, server_port): result_list = [] try: p = {'inputwords': standard_name_chn} url_values = urllib.parse.urlencode(p) url_values = url_values.encode(encoding='UTF8') req = urllib.request.Request('http://' + server_ip + ':' + server_port + "/nlpirService",url_values) res = urllib.request.urlopen(req, timeout=80) response = res.read() if response is not None and len(response) > 0: response_list = response.decode('utf-8').split('##') if len(response_list) == 3 and len(response_list[2]) != '': chn_name_list = response_list[2].split('&&') result_list = [x for x in chn_name_list if len(x) > 0] except socket.timeout as e: log.e(e) except HTTPError as e: log.d(e) except URLError as e: log.d(e) except Exception as ex: log.e(ex) return result_list
def getdata(): try: config = Config(Server.const.Config) log.d(request.method) log.d(request.remote_addr) pv_base = ProviderBase() msgfmter = MessageFormatter(get_request) t_req=datetime.datetime.now() ''' gevent.sleep(0) timeout = gevent.Timeout(int(config.timeout)) timeout.start() log.d('timeout = ' + config.timeout) ''' result = {} log.d('VIN Code:[%s]' % msgfmter.VinCode) log.d('MaintenanceStationID Code:[%s]' % msgfmter.MaintenanceStationID) if len(msgfmter.VinCode.replace(' ','')) < 17: log.e("VIN's length was wrong..") dictMerged = {} dictMerged.update(msgfmter.build_HTTP_head()) dictMerged['ResponseCode'] = '89' dictMerged['ResponseCodeDescription'] = 'VIN码长度不正确' return json.dumps(dictMerged) tables_brand_id = pv_base.select_brand_by_id(msgfmter.VinCode.upper()) brand_id = '' if tables_brand_id is not None and len(tables_brand_id) > 0: brand_id = tables_brand_id[0] log.d('Brand:id = [%s],cls = [%s]' % (tables_brand_id[0],tables_brand_id[1])) res_check_user_auth = check_sso_auth(msgfmter.MaintenanceStationID, brand_id, msgfmter.TransactionType) log.d(res_check_user_auth) else: log.d('该品牌汽车暂不支持!') result['ResponseCode'] = '30' result['ResponseCodeDescription'] = '无法识别的汽车品牌' dictMerged = dict(result) dictMerged.update(msgfmter.build_HTTP_head()) return json.dumps(dictMerged) #add for log on 01-20 start try: t_req=datetime.datetime.now() form = request.form.to_dict() args = request.args.to_dict() if (form == None or len(form)==0) and (args != None or len(args)>0): form=args saveLogIntoBaseDB('','request',json.dumps(form,ensure_ascii=False).replace("'","''"),t_req) sso_log(msgfmter.MaintenanceStationID, brand_id, msgfmter.TransactionType, 'request', json.dumps(form,ensure_ascii=False).replace("'", "''"), t_req) except Exception as e: log.e(e) #end if res_check_user_auth != '00': log.d('res_check_user_auth was failed!') result['ResponseCode'] = res_check_user_auth DescriptionList= {'50':'用户不存在', '51':"用户已封号", '52':"用户有效期失效", '53':"用户无品牌查询权限", '54':"用户查询品牌有效期失效", '55':"用户此品牌查询已被封", '56':"用户每天查询vin超过限定次数", '57':"用户每天查询part超过限定次数", '58':"用户查询vin总数超过限定次数", '59':"用户查询part总数超过限定次数", '60':"用户1小时内访问次数超过限定次数", '61':"用户1天内访问次数超过限定次数", '62':"用户1个月内访问次数超过限定次数" } if res_check_user_auth in DescriptionList.keys(): result['ResponseCodeDescription'] = DescriptionList[res_check_user_auth] else: result['ResponseCodeDescription'] = '用户没有权限访问' dictMerged = dict(result) dictMerged.update(msgfmter.build_HTTP_head()) return json.dumps(dictMerged) if msgfmter.TransactionType == '01': #log.d('VIN Code:[%s]' % msgfmter.VinCode) if msgfmter.VinCode == 'SPECIAL_FOR_POLLING': dictMerged={'ResponseCode': '200'} return json.dumps(dictMerged) brand = pv_base.select_brand_by_vin( msgfmter.VinCode[:3].upper()) if brand is not None and len(brand) > 0: log.d('Brand:[%s],[%s]' % (brand[0],brand[1])) verify_vin = getattr(load_model(brand[0]), "verify_vin") result = verify_vin(msgfmter.VinCode.upper()) result['Brand'] = brand[1] else: log.d('该品牌汽车暂不支持!') result['ResponseCode'] = '30' result['ResponseCodeDescription'] = '无法识别的汽车品牌' elif msgfmter.TransactionType == '02': #nlp_list = nlp.MJJH_BZ_Info(msgfmter.PartNameCHN.upper()) nlp_list = nlpir_parser(msgfmter.PartNameCHN.upper(), config.nlpserver, config.nlpserver_posrt) if nlp_list is not None and len(nlp_list) > 0: #if msgfmter.CarModeCode.isdigit()==False: #开始为防止脏数据,后由于加入车型信息,注释掉 # raise Exception("CarModeCode was invalid digit.") li = msgfmter.CarModeCode.split(':') log.d('Brand:[%s]' % li[0]) #log.d('VIN:[%s]'%msgfmter.VinCode.upper()) find_parts_by_name = getattr(load_model(li[0]), "find_parts_by_name") result = find_parts_by_name(li[1], nlp_list, msgfmter.VinCode.upper()) #加判断,一旦没有查到,清除方向再查询 #added for log 01-22 start by Neo result['nlpir_result']=nlp_list #end else: log.d('[%s]无法识别的专业用语',msgfmter.PartNameCHN) result['ResponseCode'] = '20' result['ResponseCodeDescription'] = '无法识别的专业用语' elif msgfmter.TransactionType == '03': li = msgfmter.CarModeCode.split(':') log.d('Brand:[%s], CarGroupCode:[%s], PartBlockCode:[%s]' % (li[0],msgfmter.CarGroupCode,msgfmter.PartBlockCode)) find_parts_by_index = getattr(load_model(li[0]), "find_parts_by_index") result = find_parts_by_index(li[1],msgfmter.CarGroupCode,msgfmter.PartBlockCode, msgfmter.VinCode.upper()) dictMerged=dict(result) dictMerged.update(msgfmter.build_HTTP_head()) except Timeout as t: log('Timeout occurred.!!') #if t is not timeout: # log('Timeout occurred.!!') #else: # log.e('Timeout occurred.but timeout was not define.') dictMerged={} dictMerged.update(msgfmter.build_HTTP_head()) dictMerged['ResponseCode'] = '88' dictMerged['ResponseCodeDescription'] = '服务器操作超时' except Exception as e: log.e(e) dictMerged={} dictMerged.update(msgfmter.build_HTTP_head()) dictMerged['ResponseCode'] = '80' dictMerged['ResponseCodeDescription'] = '无效的异常码' #add for log on 01-19 start req_str=str(request.values); if len(req_str)>700: req_str=req_str[0:700]+"..." str_e="Error {0}".format(str(e.args[0])).encode("utf-8") if len(str_e)>60: str_e=str_e[0:60]+"..." log_result=copy.deepcopy(dictMerged); log_result['Exception']=str_e; saveLogIntoExp_ErrDB('',req_str.replace("'","''"),'Exception',t_req ,str(log_result).replace("'","''")); #end #add for log on 01-20 start log.d ('getdata was end') log.d(request.remote_addr) try: encodedjson = json.dumps(dictMerged,ensure_ascii=False) log_result=json.loads(encodedjson); if 'nlpir_result' in dictMerged: dictMerged.pop('nlpir_result'); if 'NoShortnumMaptbl' in dictMerged: dictMerged.pop('NoShortnumMaptbl'); #if 'PartNumberList' in dictMerged: #partList=list(dictMerged['PartNumberList']); #if len(partList)>0: #for part in partList: #if 'PicPath' in part: #part.pop('PicPath');#0331-retain pic info if 'StructuredPartNameList' in log_result: log_result.pop('StructuredPartNameList'); if 'PartNumberList' in log_result: partList=list(log_result['PartNumberList']); if len(partList)>0: for part in partList: if 'ImageFile' in part: part.pop('ImageFile'); if 'CarModeCode'in part: part.pop('CarModeCode'); if 'PartNumberIndexRef'in part: part.pop('PartNumberIndexRef'); if 'CarGroupCode'in part: part.pop('CarGroupCode'); if len(str(partList))>2500:# temp solution, remove it in kafka partList=partList[0] log_result['PartNumberList']= partList ; if 'nlpir_result'in log_result: #nlpir_atoms= nlp.segmentForLog(msgfmter.PartNameCHN.upper()); nlpir_atoms = '' log_result['inputwords'] = msgfmter.PartNameCHN; log_result['nlpir_atoms']= nlpir_atoms t_resp=datetime.datetime.now() saveLogIntoBaseDB('','response',json.dumps(log_result,ensure_ascii=False).replace("'","''"),t_resp); sso_log(msgfmter.MaintenanceStationID, brand_id, msgfmter.TransactionType, 'response', json.dumps(log_result,ensure_ascii=False).replace("'", "''"), t_req) #end except Exception as e: log.e(e) log.d(json) return json.dumps(dictMerged)
def __exit__(self, exc_type, exc_val, exc_tb): log.e('HttpServer was encountered the error')
def getdata(): try: config = Config(Server.const.Config) log.d(request.method) log.d(request.remote_addr) pv_base = ProviderBase() msgfmter = MessageFormatter(get_request) t_req = datetime.datetime.now() ''' gevent.sleep(0) timeout = gevent.Timeout(int(config.timeout)) timeout.start() log.d('timeout = ' + config.timeout) ''' result = {} log.d('VIN Code:[%s]' % msgfmter.VinCode) log.d('MaintenanceStationID Code:[%s]' % msgfmter.MaintenanceStationID) if len(msgfmter.VinCode.replace(' ', '')) < 17: log.e("VIN's length was wrong..") dictMerged = {} dictMerged.update(msgfmter.build_HTTP_head()) dictMerged['ResponseCode'] = '89' dictMerged['ResponseCodeDescription'] = 'VIN码长度不正确' return json.dumps(dictMerged) tables_brand_id = pv_base.select_brand_by_id(msgfmter.VinCode.upper()) brand_id = '' if tables_brand_id is not None and len(tables_brand_id) > 0: brand_id = tables_brand_id[0] log.d('Brand:id = [%s],cls = [%s]' % (tables_brand_id[0], tables_brand_id[1])) res_check_user_auth = check_sso_auth(msgfmter.MaintenanceStationID, brand_id, msgfmter.TransactionType) log.d(res_check_user_auth) else: log.d('该品牌汽车暂不支持!') result['ResponseCode'] = '30' result['ResponseCodeDescription'] = '无法识别的汽车品牌' dictMerged = dict(result) dictMerged.update(msgfmter.build_HTTP_head()) return json.dumps(dictMerged) #add for log on 01-20 start try: t_req = datetime.datetime.now() form = request.form.to_dict() args = request.args.to_dict() if (form == None or len(form) == 0) and (args != None or len(args) > 0): form = args saveLogIntoBaseDB( '', 'request', json.dumps(form, ensure_ascii=False).replace("'", "''"), t_req) sso_log(msgfmter.MaintenanceStationID, brand_id, msgfmter.TransactionType, 'request', json.dumps(form, ensure_ascii=False).replace("'", "''"), t_req) except Exception as e: log.e(e) #end if res_check_user_auth != '00': log.d('res_check_user_auth was failed!') result['ResponseCode'] = res_check_user_auth DescriptionList = { '50': '用户不存在', '51': "用户已封号", '52': "用户有效期失效", '53': "用户无品牌查询权限", '54': "用户查询品牌有效期失效", '55': "用户此品牌查询已被封", '56': "用户每天查询vin超过限定次数", '57': "用户每天查询part超过限定次数", '58': "用户查询vin总数超过限定次数", '59': "用户查询part总数超过限定次数", '60': "用户1小时内访问次数超过限定次数", '61': "用户1天内访问次数超过限定次数", '62': "用户1个月内访问次数超过限定次数" } if res_check_user_auth in DescriptionList.keys(): result['ResponseCodeDescription'] = DescriptionList[ res_check_user_auth] else: result['ResponseCodeDescription'] = '用户没有权限访问' dictMerged = dict(result) dictMerged.update(msgfmter.build_HTTP_head()) return json.dumps(dictMerged) if msgfmter.TransactionType == '01': #log.d('VIN Code:[%s]' % msgfmter.VinCode) if msgfmter.VinCode == 'SPECIAL_FOR_POLLING': dictMerged = {'ResponseCode': '200'} return json.dumps(dictMerged) brand = pv_base.select_brand_by_vin(msgfmter.VinCode[:3].upper()) if brand is not None and len(brand) > 0: log.d('Brand:[%s],[%s]' % (brand[0], brand[1])) verify_vin = getattr(load_model(brand[0]), "verify_vin") result = verify_vin(msgfmter.VinCode.upper()) result['Brand'] = brand[1] else: log.d('该品牌汽车暂不支持!') result['ResponseCode'] = '30' result['ResponseCodeDescription'] = '无法识别的汽车品牌' elif msgfmter.TransactionType == '02': #nlp_list = nlp.MJJH_BZ_Info(msgfmter.PartNameCHN.upper()) nlp_list = nlpir_parser(msgfmter.PartNameCHN.upper(), config.nlpserver, config.nlpserver_posrt) if nlp_list is not None and len(nlp_list) > 0: #if msgfmter.CarModeCode.isdigit()==False: #开始为防止脏数据,后由于加入车型信息,注释掉 # raise Exception("CarModeCode was invalid digit.") li = msgfmter.CarModeCode.split(':') log.d('Brand:[%s]' % li[0]) #log.d('VIN:[%s]'%msgfmter.VinCode.upper()) find_parts_by_name = getattr(load_model(li[0]), "find_parts_by_name") result = find_parts_by_name(li[1], nlp_list, msgfmter.VinCode.upper()) #加判断,一旦没有查到,清除方向再查询 #added for log 01-22 start by Neo result['nlpir_result'] = nlp_list #end else: log.d('[%s]无法识别的专业用语', msgfmter.PartNameCHN) result['ResponseCode'] = '20' result['ResponseCodeDescription'] = '无法识别的专业用语' elif msgfmter.TransactionType == '03': li = msgfmter.CarModeCode.split(':') log.d('Brand:[%s], CarGroupCode:[%s], PartBlockCode:[%s]' % (li[0], msgfmter.CarGroupCode, msgfmter.PartBlockCode)) find_parts_by_index = getattr(load_model(li[0]), "find_parts_by_index") result = find_parts_by_index(li[1], msgfmter.CarGroupCode, msgfmter.PartBlockCode, msgfmter.VinCode.upper()) dictMerged = dict(result) dictMerged.update(msgfmter.build_HTTP_head()) except Timeout as t: log('Timeout occurred.!!') #if t is not timeout: # log('Timeout occurred.!!') #else: # log.e('Timeout occurred.but timeout was not define.') dictMerged = {} dictMerged.update(msgfmter.build_HTTP_head()) dictMerged['ResponseCode'] = '88' dictMerged['ResponseCodeDescription'] = '服务器操作超时' except Exception as e: log.e(e) dictMerged = {} dictMerged.update(msgfmter.build_HTTP_head()) dictMerged['ResponseCode'] = '80' dictMerged['ResponseCodeDescription'] = '无效的异常码' #add for log on 01-19 start req_str = str(request.values) if len(req_str) > 700: req_str = req_str[0:700] + "..." str_e = "Error {0}".format(str(e.args[0])).encode("utf-8") if len(str_e) > 60: str_e = str_e[0:60] + "..." log_result = copy.deepcopy(dictMerged) log_result['Exception'] = str_e saveLogIntoExp_ErrDB('', req_str.replace("'", "''"), 'Exception', t_req, str(log_result).replace("'", "''")) #end #add for log on 01-20 start log.d('getdata was end') log.d(request.remote_addr) try: encodedjson = json.dumps(dictMerged, ensure_ascii=False) log_result = json.loads(encodedjson) if 'nlpir_result' in dictMerged: dictMerged.pop('nlpir_result') if 'NoShortnumMaptbl' in dictMerged: dictMerged.pop('NoShortnumMaptbl') #if 'PartNumberList' in dictMerged: #partList=list(dictMerged['PartNumberList']); #if len(partList)>0: #for part in partList: #if 'PicPath' in part: #part.pop('PicPath');#0331-retain pic info if 'StructuredPartNameList' in log_result: log_result.pop('StructuredPartNameList') if 'PartNumberList' in log_result: partList = list(log_result['PartNumberList']) if len(partList) > 0: for part in partList: if 'ImageFile' in part: part.pop('ImageFile') if 'CarModeCode' in part: part.pop('CarModeCode') if 'PartNumberIndexRef' in part: part.pop('PartNumberIndexRef') if 'CarGroupCode' in part: part.pop('CarGroupCode') if len(str(partList)) > 2500: # temp solution, remove it in kafka partList = partList[0] log_result['PartNumberList'] = partList if 'nlpir_result' in log_result: #nlpir_atoms= nlp.segmentForLog(msgfmter.PartNameCHN.upper()); nlpir_atoms = '' log_result['inputwords'] = msgfmter.PartNameCHN log_result['nlpir_atoms'] = nlpir_atoms t_resp = datetime.datetime.now() saveLogIntoBaseDB( '', 'response', json.dumps(log_result, ensure_ascii=False).replace("'", "''"), t_resp) sso_log(msgfmter.MaintenanceStationID, brand_id, msgfmter.TransactionType, 'response', json.dumps(log_result, ensure_ascii=False).replace("'", "''"), t_req) #end except Exception as e: log.e(e) log.d(json) return json.dumps(dictMerged)