Ejemplo n.º 1
0
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 字符串出错")
Ejemplo n.º 2
0
	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
Ejemplo n.º 3
0
    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)
Ejemplo n.º 4
0
 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), ))
Ejemplo n.º 5
0
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
Ejemplo n.º 6
0
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)))
Ejemplo n.º 7
0
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