def response_body_to_json_object(body): json_string = bytes.decode(body) try: return json.loads(json_string) except JSONDecodeError: logger.error("解析出错的Json内容为: " + json_string) raise RuntimeError("解析 Json 字符串出错")
def crf_learn(self, identity, category_name, crf_tokenized_samples): """""" crf_conll_samples = crf_tokenized_samples if not crf_conll_samples: print '%s have no train_data',category_name return None,None,None train_file_tempfile = tempfile.NamedTemporaryFile() train_file_tempfile.write('\n'.join(crf_conll_samples)) train_file_tempfile.flush() #将缓冲区中的数据立刻写入文件 template_file = os.path.join( gv.templates_path , 'template' ) train_file = train_file_tempfile.name model_file_target_dir = os.path.join(gv.get_model_home(),identity) if not os.path.exists(model_file_target_dir): os.mkdir(model_file_target_dir) model_file = os.path.join( os.path.join(gv.get_model_home(),identity) , identity+ '@' + category_name + '.model' ) try: starttime = datetime.datetime.now() status, output, tagger = self.__crfpp_learn(template_file,train_file,model_file) endtime = datetime.datetime.now() print 'crf_encoding cost %s seconds'%(endtime - starttime) if status != 0: logger.error("crf_encoding(%s) encountered an error"%crf_model_id) return None,None,None return status, output, tagger except Exception, e: return None,None,None
def __packing(self,tokenList): """ tokenList: 橡套 O 0.999437782462 电缆 O 0.999528699368 YC B-XXX 0.999724657583 5 B-XS 0.999244194846 # I-XS 0.999244194846 =>为了试验鲁棒性,自己填的一行 * O 0.999995518173 78 B-BCJMM 0.979645961503 + O 0.999998658246 3 B-XS 0.999511994139 * O 0.999999890698 25 B-BCJMM 0.999750221636 => word_list=[橡套 电缆 YC 5# * 78 + 3 * 25] chunktag_list=[O O XXX XS O BCJMM O XS O BCJMM] """ word_list = list() chunktag_list = list() prob_list = list() index = 0 previous_chunktag = '' for token in tokenList: if token.strip() == '': continue items = token.split() if len(items)==3: chunktag = '' BITag = items[1].split('-') if len(BITag)>1: chunktag = BITag[1] else: chunktag = 'O' (word,chunktag,prob) = (items[0],chunktag,items[2]) if chunktag == previous_chunktag and BITag[0]=='I': ### word_list[len(word_list)-1] += word prob_list[len(prob_list)-1] += '+'+prob ### else: word_list.append(word) chunktag_list.append(chunktag) prob_list.append(prob) # previous_chunktag = chunktag else: logger.error("matching encountered an error,output_str=\n%s"%('\n'.join(tokenList))) return (word_list,chunktag_list,prob_list)
def post(self): try: logger.info("Receiver[post] request: %s" % self.request) data = json.loads(self.request.body) # data: {'BGP-BJ-Mhttp://musicfile.baidu.com': 500} message = {} if not data: message['error_type'] = 'null data' message['code'] = 201 return json.loads(message) # report_data(data) # ... response = report_data(data) logger.info('Receiver[post] response: %s' % (response, )) self.write(response) except Exception as e: logger.error("Receiver[error]: %s" % (traceback.format_exc(e), ))
def check_success_or_not(response): if response is None: return None if response.status_code == 200: result = decode_response_as_json(response.content) if result['errcode'] == 0: return result elif result['errcode'] == 400: logger.info('本轮预约未开始,下单失败。') else: logger.warning("errcode:" + str(result['errcode'])) logger.warning("errmsg :" + str(result['errmsg'])) logger.warning("detail :" + str(result['detailErrMsg'])) else: logger.error('http status_code: ' + str(response.status_code)) return None
def read_command_args(): args = sys.argv args_count = len(args) - 1 if args_count == 1 and (args[1] == '-h' or args[1] == '--help'): print() print(' -n, --name 设置姓名') print(' -i, --id 设置身份证号码') print(' -m, --mobile 设置手机号码') print(' -t, --type 设置口罩类型, 1=N95(5个), 2=普通防护(10个)') print(' -s, --session 设置会话id') print(' --status-timeout 检查状态超时时间,单位:秒,默认 3 秒') print(' --order_timeout 下单接口超时时间,单位:秒,默认 2 秒') print() print(' -h, --help 查看所有参数', end='\n\n') exit(0) if args_count & 1 == 1: logger.error('[Check your arguments]检查输入参数') exit(1) for i in range(0, args_count >> 1): idx = i * 2 key = args[idx + 1] val = args[idx + 2] logger.debug('{}={}'.format(key, str(val))) if key == '-n' or key == '--name': config.YOUR_NAME = str(val) elif key == '-i' or key == '--id': config.YOUR_IDNO = str(val) elif key == '-m' or key == '--mobile': config.YOUR_MOBILE = str(val) elif key == '-t' or key == '--type': config.MASK_TYPE = int(val) elif key == '-s' or key == '--session': config.LOGIN_SESSION_ID = str(val) elif key == '--status-timeout': config.CEHCK_STATUS_TIMEOUT_SECONDS = int(val) elif key == '--order_timeout': config.ORDER_TIMEOUT_SECONDS = int(val) else: logger.info('[Unknown Arguments]未知参数:{}={}'.format(key, str(val)))
def post(url, data, headers=None, proxies=None, verify=None, timeout=15): if headers is None: headers = {} if data is None: data = {} if proxies is None: proxies = {} logger.debug( "execute request: method: post, url: %s, params: %s, headers: %s" % (url, str(data), str(headers))) try: return requests.post(url, data=data, headers=headers, proxies=proxies, verify=verify, timeout=timeout) except requests.exceptions.ConnectTimeout: logger.error('[Connect Timeout]连接超时') return None except requests.exceptions.ReadTimeout: logger.error('[Read Timeout]响应超时') return None