def __init__(self): configer = Configer('') access_key = configer.get_configer('QINIU', 'access_key') secret_key = configer.get_configer('QINIU', 'secret_key') self.q = Auth(access_key, secret_key) self.bucket = BucketManager(self.q)
def __init__(self): configer = Configer('') access_key = configer.get_configer('QINIU','access_key') secret_key = configer.get_configer('QINIU','secret_key') self.q=Auth(access_key,secret_key) self.bucket = BucketManager(self.q)
def load(): configer = Configer('../config.ini') log_info = configer.get_configer('LOG', 'info') log_path = configer.get_configer('LOG', 'path') log_format = '%(asctime)s - %(name)s - %(levelname)s - %(filename)s - %(funcName)s - %(message)s' logger = Logger(info=log_info, path=log_path, format=log_format) LOG = logger.get_logger() '''
def load(): configer = Configer("../config.ini") log_info = configer.get_configer("LOG", "info") log_path = configer.get_configer("LOG", "path") log_format = "%(asctime)s - %(name)s - %(levelname)s - %(filename)s - %(funcName)s - %(message)s" logger = Logger(info=log_info, path=log_path, format=log_format) LOG = logger.get_logger() """
def load(): configer = Configer('../config.ini') log_info = configer.get_configer('LOG','info') log_path = configer.get_configer('LOG','path') log_format = '%(asctime)s - %(name)s - %(levelname)s - %(filename)s - %(funcName)s - %(message)s' logger = Logger(info = log_info,path = log_path,format = log_format) LOG = logger.get_logger() doit = Doit()
def load(): configer = Configer('../config.ini') log_info = configer.get_configer('LOG','info') log_path = configer.get_configer('LOG','path') log_format = '%(asctime)s - %(name)s - %(levelname)s - %(filename)s - %(funcName)s - %(message)s' logger = Logger(info = log_info,path = log_path,format = log_format) LOG = logger.get_logger() router = Router(1,'InterThread') router.start()
def connect(self, db): configer = Configer() mongo_host = configer.get_configer('MONGO', 'host') mongo_port = int(configer.get_configer('MONGO', 'port')) try: self.client = MongoClient(host=mongo_host, port=mongo_port) self.db = self.client[db] except ConnectionFailure, e: LOG.error('mongo connect failed [%s]' % e) raise DBException('mongo connect failed')
def connect(self,db): configer = Configer() mongo_host = configer.get_configer('MONGO','host') mongo_port = int(configer.get_configer('MONGO','port')) try: self.client = MongoClient(host = mongo_host,port = mongo_port) self.db = self.client[db] except ConnectionFailure,e: LOG.error('mongo connect failed [%s]' % e) raise DBException('mongo connect failed')
def get(self): enter_func(self) params = {'token': generate_token(), 'host': host, 'zone': 8} if 'zone' in self.request.arguments.keys( ) and self.request.arguments['zone'][0].isdigit(): params['zone'] = int(self.request.arguments['zone'][0]) redis_handle = redis.Redis(Configer().get_configer('REDIS', 'host')) if redis_handle.exists('json_class:%d' % params['zone']): leave_func(self, 0) return self.write( redis_handle.get('json_class:%d' % params['zone'])) url = 'http://wenku.baidu.com/api/interface/getclass?%s' % urllib.urlencode( params) LOG.info(url) ret = json.loads( urllib2.urlopen(url).read().decode('raw_unicode_escape')) LOG.info(ret) if 0 != ret['status']['code']: LOG.error('baidu library interface error: %s' % ret['status']) return leave_func(self, 100) result = error_process(0) result['data'] = ret['data'] result = json.dumps(result, sort_keys=True, ensure_ascii=False) redis_handle.set('json_class:%d' % params['zone'], result) leave_func(self, 0) return self.write(result)
def get_handle(self, index): config = eval(Configer().get_configer('MYSQL', 'configs'))[index] return MySQLdb.connect(host=config['host'], user=config['user'], passwd=config['passwd'], db=config['db'], port=config['port'], charset=config['charset'])
def connect_master(self): if self.connect_flag: self.cur.close() self.conn.close() self.connect_flag = False configer = Configer() host = configer.get_configer('MYSQL', 'host') port = configer.get_configer('MYSQL', 'port') user = configer.get_configer('MYSQL', 'user') passwd = configer.get_configer('MYSQL', 'passwd') db = configer.get_configer('MYSQL', 'db') charset = configer.get_configer('MYSQL', 'charset') try: self.conn = MySQLdb.connect(host=host, port=int(port), user=user, passwd=passwd, db=db, charset=charset) self.cur = self.conn.cursor() self.connect_flag = True except MySQLdb.Error, e: self.status = self.status_enum.CONN_ERR msg = 'connect failed' LOG.error('Error:%s' % str(e)) raise DBException(msg)
def connect_master(self): if self.connect_flag: self.cur.close() self.conn.close() self.connect_flag = False configer = Configer() host = configer.get_configer('MYSQL','host') port = configer.get_configer('MYSQL','port') user = configer.get_configer('MYSQL','user') passwd = configer.get_configer('MYSQL','passwd') db = configer.get_configer('MYSQL','db') charset = configer.get_configer('MYSQL','charset') try: self.conn = MySQLdb.connect( host = host, port = int(port), user = user, passwd = passwd, db = db, charset = charset) self.cur = self.conn.cursor() self.connect_flag = True except MySQLdb.Error,e: self.status = self.status_enum.CONN_ERR msg = 'connect failed' LOG.error('Error:%s' % str(e)) raise DBException(msg)
def get_handle(self): return MySQLdb.connect( host=Configer().get_configer('MYSQL', 'host'), user=Configer().get_configer('MYSQL', 'user'), passwd=Configer().get_configer('MYSQL', 'passwd'), db=Configer().get_configer('MYSQL', 'db'), port=int(Configer().get_configer('MYSQL', 'port')), charset=Configer().get_configer('MYSQL', 'charset'))
def load(): configer = Configer('../config.ini') log_info = configer.get_configer('LOG','info') log_path = configer.get_configer('LOG','path') log_format = '%(asctime)s - %(name)s - %(levelname)s - %(filename)s - %(funcName)s - %(message)s' logger = Logger(info = log_info,path = log_path,format = log_format) LOG = logger.get_logger() ''' from mongo import Mongo mongo = Mongo() mongo.connect('resource') ''' from mysql import Mysql mysql = Mysql() mysql.connect_master() '''
def get(self): for i in range(1): self.set_header("charset", "utf-8") LOG.info('API IN[%s]' % (self.__class__.__name__)) LOG.info('PARAMETER IN[%s]' % self.request.arguments) ret = { 'code': '', 'message': '', 'group_list': [], 'default_num': 0 } essential_keys = set(['timestamp', 'secret']) if Base.check_parameter(set(self.request.arguments.keys()), essential_keys): ret['code'] = 1 ret['message'] = '无效参数' LOG.error('ERR[in parameter invalid]') break timestamp = ''.join(self.request.arguments['timestamp']) secret = ''.join(self.request.arguments['secret']) if Base.empty(timestamp): ret['code'] = 1 ret['message'] = '无效参数' LOG.error('ERROR[parameter empty]') break key = timestamp secret_key = sha1(key).hexdigest() if secret == secret_key: configer = Configer() remote_host = configer.get_configer('REMOTE', 'host') remote_port = configer.get_configer('REMOTE', 'port') remote_uri = configer.get_configer('REMOTE', 'uri') remote_url = "http://%s:%s/%s" % (remote_host, remote_port, remote_uri) token = self.get_cookie("teacher_id") LOG.info('TOKEN[%s]' % token) if token is None: ret['code'] = 6 ret['message'] = '无效参数' LOG.error('ERROR[token empty]') break post_data = {'token': token} client = httpclient.AsyncHTTPClient() response = yield gen.Task(client.fetch, remote_url, method='POST', body=urllib.urlencode(post_data)) #response = Http.post(remote_url,post_data) LOG.info('REMOTE RES CODE[%d]' % response.code) if 200 == response.code: encode_body = json.loads(response.body) if 0 == encode_body['code'] or 2 == encode_body['code']: ret['code'] = 7 ret['message'] = '无效参数' LOG.error('ERR[token not exist]') break if 1 == encode_body['code']: #subject_id = encode_body['subject_id'] #grade_id = encode_body['grade_id'] system_id = encode_body['system_id'] #org_type = encode_body['org_type'] try: group_list, default_num = Business.get_group_list( system_id) if group_list is not False: ret['group_list'] = group_list ret['default_num'] = default_num except DBException as e: ret['code'] = 3 ret['message'] = '服务器错误' LOG.error('ERR[mysql error]') break else: ret['code'] = 3 ret['message'] = '服务器错误' LOG.error('ERROR[remote error]') break else: ret['code'] = 3 ret['message'] = '服务器错误' LOG.error('ERROR[remote error]') break ret['code'] = 0 ret['message'] = 'success' break else: ret['code'] = 4 ret['message'] = 'secure key error' LOG.error('ERR[secure key error]') break self.write(ret) self.finish() LOG.info('PARAMETER OUT[%s]' % ret) LOG.info('API OUT[%s]' % (self.__class__.__name__))
def _read_config(self): configer = Configer('../config.ini') self.pipe_file = configer.get_configer('QUEUE','PIPE_FILE')
def get_handle(self): return MongoClient(host=Configer().get_configer('MONGO', 'host'), port=int(Configer().get_configer('MONGO', 'port')))
def get_handle(self, index): return MongoClient( eval(Configer().get_configer('MONGO', 'configs'))[index])
def _read_config(self): configer = Configer() self.pipe_file = configer.get_configer('QUEUE','pipe_file') self.timeout = configer.get_configer('QUEUE','timeout') self.max_cmd = configer.get_configer('QUEUE','max_cmd')
def post(self): for i in range(1): LOG.info('API IN[%s]' % (self.__class__.__name__)) LOG.info('PARAMETER IN[%s]' % self.request.arguments) ret = {'code':'','message':''} essential_keys = set(['question_id','group_id']) if Base.check_parameter(set(self.request.arguments.keys()),essential_keys): ret['code'] = 1 ret['message'] = '无效参数' LOG.error('ERROR[in parameter invalid]') break question_id = ''.join(self.request.arguments['question_id']) group_id = ''.join(self.request.arguments['group_id']) if Base.empty(question_id) or Base.empty(group_id): ret['code'] = 1 ret['message'] = '无效参数' LOG.error('ERROR[parameter empty]') break configer = Configer() remote_host = configer.get_configer('REMOTE','host') remote_port = configer.get_configer('REMOTE','port') remote_uri = configer.get_configer('REMOTE','uri') remote_url = "http://%s:%s/%s" % (remote_host,remote_port,remote_uri) token = self.get_cookie("teacher_id") LOG.info('TOKEN[%s]' % token) if token is None: ret['code'] = 6 ret['message'] = '无效参数' LOG.error('ERROR[token empty]') break post_data = {'token' : token} client = httpclient.AsyncHTTPClient() response = yield gen.Task(client.fetch,remote_url,method = 'POST',body = urllib.urlencode(post_data)) #response = Http.post(remote_url,post_data) LOG.info('REMOTE RES CODE[%d]' % response.code) if 200 == response.code: encode_body = json.loads(response.body) if 0 == encode_body['code'] or 2 == encode_body['code']: ret['code'] = 7 ret['message'] = '无效参数' LOG.error('ERROR[token not exist]') break if 1 == encode_body['code']: subject_id = encode_body['subject_id'] grade_id = encode_body['grade_id'] system_id = encode_body['system_id'] org_type = encode_body['org_type'] db = Mysql() question_sql = "update entity_question set question_group=%(group_id)d where upload_id=%(system_id)d and id=%(question_id)d;" try: db.connect_master() question_res = db.query(question_sql,question_id = int(question_id),system_id = int(system_id),group_id=int(group_id)) if not question_res: ret['code'] = 3 ret['message'] = '服务器错误' LOG.error('ERROR[mysql error]') break question_sql = db.get_last_sql() LOG.info('SQL[%s] - RES[%s]' % (question_sql,question_res)) except DBException as e: db.rollback() ret['code'] = 3 ret['message'] = '服务器错误' LOG.error('ERROR[mysql error]') break else: ret['code'] = 3 ret['message'] = '服务器错误' LOG.error('ERROR[remote error]') break else: ret['code'] = 3 ret['message'] = '服务器错误' LOG.error('ERROR[remote error]') break ret['code'] = 0 ret['message'] = 'success' break self.write(json.dumps(ret)) self.finish() LOG.info('PARAMETER OUT[%s]' % ret) LOG.info('API OUT[%s]' % (self.__class__.__name__))
def post(self): for i in range(1): LOG.info('API IN[%s]' % (self.__class__.__name__)) LOG.info('PARAMETER IN[%s]' % self.request.arguments) ret = {'code':'','message':''} essential_keys = set(['name']) if Base.check_parameter(set(self.request.arguments.keys()),essential_keys): ret['code'] = 1 ret['message'] = '无效参数' LOG.error('ERROR[in parameter invalid]') break group_name = ''.join(self.request.arguments['name']) #timestamp = ''.join(self.request.arguments['timestamp']) #secret = ''.join(self.request.arguments['secret']) if Base.empty(group_name): ret['code'] = 1 ret['message'] = '无效参数' LOG.error('ERROR[parameter empty]') break #key = group_name + timestamp; #secret_key = sha1(key).hexdigest() configer = Configer() remote_host = configer.get_configer('REMOTE','host') remote_port = configer.get_configer('REMOTE','port') remote_uri = configer.get_configer('REMOTE','uri') remote_url = "http://%s:%s/%s" % (remote_host,remote_port,remote_uri) token = self.get_cookie("teacher_id") LOG.info('TOKEN[%s]' % token) if token is None: ret['code'] = 6 ret['message'] = '无效参数' LOG.error('ERROR[token empty]') break post_data = {'token' : token} client = httpclient.AsyncHTTPClient() response = yield gen.Task(client.fetch,remote_url,method = 'POST',body = urllib.urlencode(post_data)) #response = Http.post(remote_url,post_data) LOG.info('REMOTE RES CODE[%d]' % response.code) if 200 == response.code: encode_body = json.loads(response.body) if 0 == encode_body['code'] or 2 == encode_body['code']: ret['code'] = 7 ret['message'] = '无效参数' LOG.error('ERROR[token not exist]') break if 1 == encode_body['code']: subject_id = encode_body['subject_id'] grade_id = encode_body['grade_id'] system_id = encode_body['system_id'] org_type = encode_body['org_type'] if Business.group_name_exist(group_name,system_id): ret['code'] = 6 ret['message'] = '组名已存在' LOG.error('ERROR[group exist]') break db = Mysql() group_sql = "insert into entity_group (name,system_id) values ('%(group_name)s',%(system_id)d);" try: db.connect_master() group_res = db.query(group_sql,group_name = group_name,system_id = system_id) group_sql = db.get_last_sql() group_id = db.get_last_id() LOG.info('SQL[%s] - RES[%s] - INS[%d]' % (group_sql,group_res,group_id)) except DBException as e: ret['code'] = 3 ret['message'] = '服务器错误' LOG.error('ERROR[mysql error]') break else: ret['code'] = 3 ret['message'] = '服务器错误' LOG.error('ERROR[remote error]') break else: ret['code'] = 3 ret['message'] = '服务器错误' LOG.error('ERROR[remote error]') break ret['id'] = group_id ret['name'] = group_name ret['code'] = 0 ret['message'] = 'success' break self.write(json.dumps(ret)) self.finish() LOG.info('PARAMETER OUT[%s]' % ret) LOG.info('API OUT[%s]' % (self.__class__.__name__))
def get(self): for i in range(1): self.set_header("charset","utf-8"); LOG.info('API IN[%s]' % (self.__class__.__name__)) LOG.info('PARAMETER IN[%s]' % self.request.arguments) ret = {'code':'','message':'','group_list' : [],'default_num' : 0} essential_keys = set(['timestamp','secret']) if Base.check_parameter(set(self.request.arguments.keys()),essential_keys): ret['code'] = 1 ret['message'] = '无效参数' LOG.error('ERR[in parameter invalid]') break timestamp = ''.join(self.request.arguments['timestamp']) secret = ''.join(self.request.arguments['secret']) if Base.empty(timestamp): ret['code'] = 1 ret['message'] = '无效参数' LOG.error('ERROR[parameter empty]') break key = timestamp; secret_key = sha1(key).hexdigest() if secret == secret_key: configer = Configer() remote_host = configer.get_configer('REMOTE','host') remote_port = configer.get_configer('REMOTE','port') remote_uri = configer.get_configer('REMOTE','uri') remote_url = "http://%s:%s/%s" % (remote_host,remote_port,remote_uri) token = self.get_cookie("teacher_id") LOG.info('TOKEN[%s]' % token) if token is None: ret['code'] = 6 ret['message'] = '无效参数' LOG.error('ERROR[token empty]') break post_data = {'token' : token} client = httpclient.AsyncHTTPClient() response = yield gen.Task(client.fetch,remote_url,method = 'POST',body = urllib.urlencode(post_data)) #response = Http.post(remote_url,post_data) LOG.info('REMOTE RES CODE[%d]' % response.code) if 200 == response.code: encode_body = json.loads(response.body) if 0 == encode_body['code'] or 2 == encode_body['code']: ret['code'] = 7 ret['message'] = '无效参数' LOG.error('ERR[token not exist]') break if 1 == encode_body['code']: #subject_id = encode_body['subject_id'] #grade_id = encode_body['grade_id'] system_id = encode_body['system_id'] #org_type = encode_body['org_type'] try: group_list,default_num = Business.get_group_list(system_id) if group_list is not False: ret['group_list'] = group_list ret['default_num'] = default_num except DBException as e: ret['code'] = 3 ret['message'] = '服务器错误' LOG.error('ERR[mysql error]') break else: ret['code'] = 3 ret['message'] = '服务器错误' LOG.error('ERROR[remote error]') break else: ret['code'] = 3 ret['message'] = '服务器错误' LOG.error('ERROR[remote error]') break ret['code'] = 0 ret['message'] = 'success' break else: ret['code'] = 4 ret['message'] = 'secure key error' LOG.error('ERR[secure key error]') break self.write(ret) self.finish() LOG.info('PARAMETER OUT[%s]' % ret) LOG.info('API OUT[%s]' % (self.__class__.__name__))
def _read_config(self): configer = Configer() self.pipe_file = configer.get_configer('QUEUE', 'pipe_file') self.timeout = configer.get_configer('QUEUE', 'timeout') self.max_cmd = configer.get_configer('QUEUE', 'max_cmd')
def post(self): for i in range(1): self.set_header("Access-Control-Allow-Origin", "*") LOG.info('API IN[%s]' % (self.__class__.__name__)) LOG.info('PARAMETER IN[%s]' % self.request.arguments) ret = {'code': '', 'message': ''} essential_keys = set([ 'json', 'html', 'topic', 'level', 'type', 'group', 'chapter', 'ref' ]) if Base.check_parameter(set(self.request.arguments.keys()), essential_keys): ret['code'] = 1 ret['message'] = '无效参数' LOG.error('ERR[in parameter invalid]') break question_json = ''.join(self.request.arguments['json']) question_html = ''.join(self.request.arguments['html']) question_topic = ''.join(self.request.arguments['topic']) question_level = ''.join(self.request.arguments['level']) question_type = ''.join(self.request.arguments['type']) question_group = ''.join(self.request.arguments['group']) question_chapter = ''.join(self.request.arguments['chapter']) ref = ''.join(self.request.arguments['ref']) if Business.is_level(question_level) is False: ret['code'] = 1 ret['message'] = '无效参数' LOG.error('ERR[level is invalid]') break try: #question_json = urllib.unquote(question_json) #question_json = question_json.replace("'","\"") encode_json = json.loads(question_json, encoding='utf-8') #question_html = urllib.unquote(question_html) #question_html = question_html.replace("'","\"") encode_html = json.loads(question_html, encoding='utf-8') LOG.info('Json Loads Successful') answer_num = 0 if Base.empty(question_topic) and Base.empty(question_chapter): ret['code'] = 1 ret['message'] = '无效参数' LOG.error('ERR[topic and chapter empty]') break if Base.empty(question_group): ret['code'] = 1 ret['message'] = '无效参数' LOG.error('ERR[group empty]') break if Base.empty(question_topic) is False: topic_list = question_topic.split(',') for question_theme in topic_list: if Business.is_topic(question_theme) is False: ret['code'] = 1 ret['message'] = '无效参数' LOG.error('ERR[topic %s invalid]' % question_theme) break type_name = Business.is_type(question_type) if type_name is False: ret['code'] = 1 ret['message'] = '无效参数' LOG.error('ERR[type is invalid]') break option_num = 0 LOG.info('Json Parse Start') if type_name == '选择题'.decode('utf-8'): if 'answer' in encode_json.keys(): answer_num = len(encode_json['answer']) option_num = len(encode_json['options']) if type_name == '填空题'.decode('utf-8'): if 'answer' in encode_json.keys(): answer_num = max([ int(group['index']) for group in encode_json['answer'] ]) LOG.info('Json Parse End') if not Base.empty(question_chapter): if Business.chapter_id_exist(question_chapter) is False: ret['code'] = 1 ret['message'] = '无效参数' LOG.error('ERR[seriess %s invalid]' % question_theme) break except (ValueError, KeyError, TypeError): ret['code'] = 1 ret['message'] = '无效参数' LOG.error('ERR[json format invalid]') break except CKException: ret['code'] = 3 ret['message'] = '服务器错误' LOG.error('ERR[mysql exception]') break key = question_topic + question_level + question_type + question_group secret_key = hashlib.sha1(key).hexdigest() qiniu = QiniuWrap() json_key = 'tmp_' + secret_key + '.json' if not qiniu.upload_data("temp", json_key, question_json): ret['code'] = 4 ret['message'] = '服务器错误' LOG.error('ERR[json upload qiniu exception]') break html_key = 'tmp_' + secret_key + '.html' if not qiniu.upload_data("temp", html_key, question_html): ret['code'] = 4 ret['message'] = '服务器错误' LOG.error('ERR[html upload qiniu exception]') break configer = Configer() remote_host = configer.get_configer('REMOTE', 'host') remote_port = configer.get_configer('REMOTE', 'port') remote_uri = configer.get_configer('REMOTE', 'uri') remote_timeout = configer.get_configer('REMOTE', 'timeout') remote_url = "http://%s:%s/%s" % (remote_host, remote_port, remote_uri) token = self.get_cookie("teacher_id") LOG.info('TOKEN[%s]' % token) if token is None: ret['code'] = 6 ret['message'] = 'token失效' LOG.error('ERROR[token empty]') break post_data = {'token': token} client = httpclient.AsyncHTTPClient() response = yield gen.Task(client.fetch, remote_url, request_timeout=int(remote_timeout), method='POST', body=urllib.urlencode(post_data)) #response = Http.post(remote_url,post_data) if 200 == response.code: encode_body = json.loads(response.body, encoding='utf-8') if 0 == encode_body['code'] or 2 == encode_body['code']: ret['code'] = 7 ret['message'] = 'token失效' LOG.error('ERR[token not exist]') break if 1 == encode_body['code']: subject_id = encode_body['subject_id'] grade_id = encode_body['grade_id'] system_id = encode_body['system_id'] org_type = encode_body['org_type'] if 0 != int(question_group): if Business.group_id_exist(question_group, system_id) is False: ret['code'] = 8 ret['message'] = '无效参数' LOG.error('ERROR[group not exist]') break db = Mysql() question_sql = "insert into entity_question (difficulty,question_docx,html,upload_time,update_time,question_type,subject_id,new_format,upload_id,upload_src,question_group,grade_id,state,is_single,question_type_id,answer_num,count_ref,paper_year,parent_question_id,count_options) values (%(level)d,'%(json)s','%(html)s',now(),now(),'%(type)s',%(subject_id)d,1,%(upload_id)d,%(upload_src)d,%(question_group)d,%(grade_id)d,'ENABLED',1,%(question_type_id)d,%(answer_num)d,0,0,0,%(count_options)d);" link_topic_sql = "insert into link_question_topic (question_id,topic_id) values (%(q_id)d,%(t_id)d);" link_chapter_sql = "insert into link_question_chapter (question_id,chapter_id) values (%(q_id)d,%(c_id)d);" try: db.connect_master() db.start_event() question_res = db.exec_event( question_sql, level=int(question_level), json=json_key, html=html_key, type=type_name, subject_id=int(subject_id), upload_id=int(system_id), upload_src=int(org_type), question_group=int(question_group), grade_id=int(grade_id), question_type_id=int(question_type), answer_num=answer_num, count_options=option_num) question_sql = db.get_last_sql() question_id = db.get_last_id() LOG.info('RES[%s] - INS[%d]' % (question_res, question_id)) if Base.empty(question_topic) is False: topic_list = question_topic.split(',') for question_theme in topic_list: topic_res = db.exec_event( link_topic_sql, q_id=int(question_id), t_id=int(question_theme)) topic_sql = db.get_last_sql() topic_id = db.get_last_id() LOG.info('RES[%s] - INS[%d]' % (topic_res, topic_id)) if not Base.empty(question_chapter): chapter_res = db.exec_event( link_chapter_sql, q_id=int(question_id), c_id=int(question_chapter)) chapter_sql = db.get_last_sql() chapter_id = db.get_last_id() LOG.info('RES[%s] - INS[%d]' % (chapter_res, chapter_id)) except DBException as e: db.rollback() db.end_event() ret['code'] = 3 ret['message'] = '服务器错误' LOG.error('ERR[insert mysql error]') break else: ret['code'] = 3 ret['message'] = '服务器错误' LOG.error('ERROR[remote error]') break mongo = Mongo() try: mongo.connect('resource') mongo.select_collection('mongo_question_json') json_id = mongo.insert_one({ "content": encode_json, "question_id": question_id }) LOG.info( 'MONGO[insert json] - DATA[%s] - INS[%s] - Question Id[%d]' % (json.dumps(encode_json), json_id, question_id)) mongo.select_collection('mongo_question_html') html_id = mongo.insert_one({ "content": encode_html, "question_id": question_id }) LOG.info( 'MONGO[insert html] - DATA[%s] - INS[%s] - Question Id[%d]' % (json.dumps(encode_html), html_id, question_id)) except DBException as e: db.rollback() db.end_event() ret['code'] = 3 ret['message'] = '服务器错误' LOG.error('ERR[mongo exception]') break db.end_event() if int(ref): doit = Doit() doit.local_img(str(question_id)) LOG.info('Local Img [%s]' % str(question_id)) ret['code'] = 0 ret['message'] = 'success' ret['id'] = question_id LOG.info('PARAMETER OUT[%s]' % ret) LOG.info('API OUT[%s]' % (self.__class__.__name__)) self.write(json.dumps(ret)) self.finish()
def _read_config(self): configer = Configer() self.queue_size = configer.get_configer('QUEUE','queue_size') self.thread_pool_num = configer.get_configer('THREADPOOL','num')
def post(self): for i in range(1): LOG.info('API IN[%s]' % (self.__class__.__name__)) LOG.info('PARAMETER IN[%s]' % self.request.arguments) ret = {'code': '', 'message': ''} essential_keys = set(['name']) if Base.check_parameter(set(self.request.arguments.keys()), essential_keys): ret['code'] = 1 ret['message'] = '无效参数' LOG.error('ERROR[in parameter invalid]') break group_name = ''.join(self.request.arguments['name']) #timestamp = ''.join(self.request.arguments['timestamp']) #secret = ''.join(self.request.arguments['secret']) if Base.empty(group_name): ret['code'] = 1 ret['message'] = '无效参数' LOG.error('ERROR[parameter empty]') break #key = group_name + timestamp; #secret_key = sha1(key).hexdigest() configer = Configer() remote_host = configer.get_configer('REMOTE', 'host') remote_port = configer.get_configer('REMOTE', 'port') remote_uri = configer.get_configer('REMOTE', 'uri') remote_url = "http://%s:%s/%s" % (remote_host, remote_port, remote_uri) token = self.get_cookie("teacher_id") LOG.info('TOKEN[%s]' % token) if token is None: ret['code'] = 6 ret['message'] = '无效参数' LOG.error('ERROR[token empty]') break post_data = {'token': token} client = httpclient.AsyncHTTPClient() response = yield gen.Task(client.fetch, remote_url, method='POST', body=urllib.urlencode(post_data)) #response = Http.post(remote_url,post_data) LOG.info('REMOTE RES CODE[%d]' % response.code) if 200 == response.code: encode_body = json.loads(response.body) if 0 == encode_body['code'] or 2 == encode_body['code']: ret['code'] = 7 ret['message'] = '无效参数' LOG.error('ERROR[token not exist]') break if 1 == encode_body['code']: subject_id = encode_body['subject_id'] grade_id = encode_body['grade_id'] system_id = encode_body['system_id'] org_type = encode_body['org_type'] if Business.group_name_exist(group_name, system_id): ret['code'] = 6 ret['message'] = '组名已存在' LOG.error('ERROR[group exist]') break db = Mysql() group_sql = "insert into entity_group (name,system_id) values ('%(group_name)s',%(system_id)d);" try: db.connect_master() group_res = db.query(group_sql, group_name=group_name, system_id=system_id) group_sql = db.get_last_sql() group_id = db.get_last_id() LOG.info('SQL[%s] - RES[%s] - INS[%d]' % (group_sql, group_res, group_id)) except DBException as e: ret['code'] = 3 ret['message'] = '服务器错误' LOG.error('ERROR[mysql error]') break else: ret['code'] = 3 ret['message'] = '服务器错误' LOG.error('ERROR[remote error]') break else: ret['code'] = 3 ret['message'] = '服务器错误' LOG.error('ERROR[remote error]') break ret['id'] = group_id ret['name'] = group_name ret['code'] = 0 ret['message'] = 'success' break self.write(json.dumps(ret)) self.finish() LOG.info('PARAMETER OUT[%s]' % ret) LOG.info('API OUT[%s]' % (self.__class__.__name__))
def _read_config(self): configer = Configer() self.queue_size = configer.get_configer('QUEUE', 'queue_size') self.thread_pool_num = configer.get_configer('THREADPOOL', 'num')
def post(self): for i in range(1): LOG.info('API IN[%s]' % (self.__class__.__name__)) LOG.info('PARAMETER IN[%s]' % self.request.arguments) ret = {'code': '', 'message': ''} essential_keys = set(['question_id', 'group_id']) if Base.check_parameter(set(self.request.arguments.keys()), essential_keys): ret['code'] = 1 ret['message'] = '无效参数' LOG.error('ERROR[in parameter invalid]') break question_id = ''.join(self.request.arguments['question_id']) group_id = ''.join(self.request.arguments['group_id']) if Base.empty(question_id) or Base.empty(group_id): ret['code'] = 1 ret['message'] = '无效参数' LOG.error('ERROR[parameter empty]') break configer = Configer() remote_host = configer.get_configer('REMOTE', 'host') remote_port = configer.get_configer('REMOTE', 'port') remote_uri = configer.get_configer('REMOTE', 'uri') remote_url = "http://%s:%s/%s" % (remote_host, remote_port, remote_uri) token = self.get_cookie("teacher_id") LOG.info('TOKEN[%s]' % token) if token is None: ret['code'] = 6 ret['message'] = '无效参数' LOG.error('ERROR[token empty]') break post_data = {'token': token} client = httpclient.AsyncHTTPClient() response = yield gen.Task(client.fetch, remote_url, method='POST', body=urllib.urlencode(post_data)) #response = Http.post(remote_url,post_data) LOG.info('REMOTE RES CODE[%d]' % response.code) if 200 == response.code: encode_body = json.loads(response.body) if 0 == encode_body['code'] or 2 == encode_body['code']: ret['code'] = 7 ret['message'] = '无效参数' LOG.error('ERROR[token not exist]') break if 1 == encode_body['code']: subject_id = encode_body['subject_id'] grade_id = encode_body['grade_id'] system_id = encode_body['system_id'] org_type = encode_body['org_type'] db = Mysql() question_sql = "update entity_question set question_group=%(group_id)d where upload_id=%(system_id)d and id=%(question_id)d;" try: db.connect_master() question_res = db.query(question_sql, question_id=int(question_id), system_id=int(system_id), group_id=int(group_id)) if not question_res: ret['code'] = 3 ret['message'] = '服务器错误' LOG.error('ERROR[mysql error]') break question_sql = db.get_last_sql() LOG.info('SQL[%s] - RES[%s]' % (question_sql, question_res)) except DBException as e: db.rollback() ret['code'] = 3 ret['message'] = '服务器错误' LOG.error('ERROR[mysql error]') break else: ret['code'] = 3 ret['message'] = '服务器错误' LOG.error('ERROR[remote error]') break else: ret['code'] = 3 ret['message'] = '服务器错误' LOG.error('ERROR[remote error]') break ret['code'] = 0 ret['message'] = 'success' break self.write(json.dumps(ret)) self.finish() LOG.info('PARAMETER OUT[%s]' % ret) LOG.info('API OUT[%s]' % (self.__class__.__name__))
def post(self): for i in range(1): self.set_header("Access-Control-Allow-Origin", "*") LOG.info('API IN[%s]' % (self.__class__.__name__)) LOG.info('PARAMETER IN[%s]' % self.request.arguments) ret = {'code':'','message':''} essential_keys = set(['json','html','topic','level','type','group','chapter','ref']) if Base.check_parameter(set(self.request.arguments.keys()),essential_keys): ret['code'] = 1 ret['message'] = '无效参数' LOG.error('ERR[in parameter invalid]') break question_json = ''.join(self.request.arguments['json']) question_html = ''.join(self.request.arguments['html']) question_topic = ''.join(self.request.arguments['topic']) question_level = ''.join(self.request.arguments['level']) question_type = ''.join(self.request.arguments['type']) question_group = ''.join(self.request.arguments['group']) question_chapter = ''.join(self.request.arguments['chapter']) ref = ''.join(self.request.arguments['ref']) if Business.is_level(question_level) is False: ret['code'] = 1 ret['message'] = '无效参数' LOG.error('ERR[level is invalid]') break try: #question_json = urllib.unquote(question_json) #question_json = question_json.replace("'","\"") encode_json = json.loads(question_json,encoding = 'utf-8') #question_html = urllib.unquote(question_html) #question_html = question_html.replace("'","\"") encode_html = json.loads(question_html,encoding = 'utf-8') LOG.info('Json Loads Successful') answer_num = 0 if Base.empty(question_topic) and Base.empty(question_chapter): ret['code'] = 1 ret['message'] = '无效参数' LOG.error('ERR[topic and chapter empty]') break if Base.empty(question_group): ret['code'] = 1 ret['message'] = '无效参数' LOG.error('ERR[group empty]') break if Base.empty(question_topic) is False: topic_list = question_topic.split(',') for question_theme in topic_list: if Business.is_topic(question_theme) is False: ret['code'] = 1 ret['message'] = '无效参数' LOG.error('ERR[topic %s invalid]' % question_theme) break type_name = Business.is_type(question_type) if type_name is False: ret['code'] = 1 ret['message'] = '无效参数' LOG.error('ERR[type is invalid]') break option_num = 0 LOG.info('Json Parse Start') if type_name == '选择题'.decode('utf-8'): if 'answer' in encode_json.keys(): answer_num = len(encode_json['answer']) option_num = len(encode_json['options']) if type_name == '填空题'.decode('utf-8'): if 'answer' in encode_json.keys(): answer_num = max([int(group['index']) for group in encode_json['answer']]) LOG.info('Json Parse End') if not Base.empty(question_chapter): if Business.chapter_id_exist(question_chapter) is False: ret['code'] = 1 ret['message'] = '无效参数' LOG.error('ERR[seriess %s invalid]' % question_theme) break except (ValueError,KeyError,TypeError): ret['code'] = 1 ret['message'] = '无效参数' LOG.error('ERR[json format invalid]') break except CKException: ret['code'] = 3 ret['message'] = '服务器错误' LOG.error('ERR[mysql exception]') break key = question_topic + question_level + question_type + question_group secret_key = hashlib.sha1(key).hexdigest() qiniu = QiniuWrap() json_key = 'tmp_' + secret_key + '.json' if not qiniu.upload_data("temp",json_key,question_json): ret['code'] = 4 ret['message'] = '服务器错误' LOG.error('ERR[json upload qiniu exception]') break html_key = 'tmp_' + secret_key + '.html' if not qiniu.upload_data("temp",html_key,question_html): ret['code'] = 4 ret['message'] = '服务器错误' LOG.error('ERR[html upload qiniu exception]') break configer = Configer() remote_host = configer.get_configer('REMOTE','host') remote_port = configer.get_configer('REMOTE','port') remote_uri = configer.get_configer('REMOTE','uri') remote_timeout = configer.get_configer('REMOTE','timeout') remote_url = "http://%s:%s/%s" % (remote_host,remote_port,remote_uri) token = self.get_cookie("teacher_id") LOG.info('TOKEN[%s]' % token) if token is None: ret['code'] = 6 ret['message'] = 'token失效' LOG.error('ERROR[token empty]') break post_data = {'token' : token} client = httpclient.AsyncHTTPClient() response = yield gen.Task(client.fetch,remote_url,request_timeout = int(remote_timeout),method = 'POST',body = urllib.urlencode(post_data )) #response = Http.post(remote_url,post_data) if 200 == response.code: encode_body = json.loads(response.body,encoding = 'utf-8') if 0 == encode_body['code'] or 2 == encode_body['code']: ret['code'] = 7 ret['message'] = 'token失效' LOG.error('ERR[token not exist]') break if 1 == encode_body['code']: subject_id = encode_body['subject_id'] grade_id = encode_body['grade_id'] system_id = encode_body['system_id'] org_type = encode_body['org_type'] if 0 != int(question_group): if Business.group_id_exist(question_group,system_id) is False: ret['code'] = 8 ret['message'] = '无效参数' LOG.error('ERROR[group not exist]') break db = Mysql() question_sql = "insert into entity_question (difficulty,question_docx,html,upload_time,update_time,question_type,subject_id,new_format,upload_id,upload_src,question_group,grade_id,state,is_single,question_type_id,answer_num,count_ref,paper_year,parent_question_id,count_options) values (%(level)d,'%(json)s','%(html)s',now(),now(),'%(type)s',%(subject_id)d,1,%(upload_id)d,%(upload_src)d,%(question_group)d,%(grade_id)d,'ENABLED',1,%(question_type_id)d,%(answer_num)d,0,0,0,%(count_options)d);" link_topic_sql = "insert into link_question_topic (question_id,topic_id) values (%(q_id)d,%(t_id)d);" link_chapter_sql = "insert into link_question_chapter (question_id,chapter_id) values (%(q_id)d,%(c_id)d);" try: db.connect_master() db.start_event() question_res = db.exec_event(question_sql,level = int(question_level),json = json_key,html = html_key,type = type_name,subject_id = int(subject_id),upload_id = int(system_id),upload_src = int(org_type),question_group = int(question_group),grade_id = int(grade_id),question_type_id = int(question_type),answer_num = answer_num,count_options = option_num) question_sql = db.get_last_sql() question_id = db.get_last_id() LOG.info('RES[%s] - INS[%d]' % (question_res,question_id)) if Base.empty(question_topic) is False: topic_list = question_topic.split(',') for question_theme in topic_list: topic_res = db.exec_event(link_topic_sql,q_id = int(question_id),t_id = int(question_theme)) topic_sql = db.get_last_sql() topic_id = db.get_last_id() LOG.info('RES[%s] - INS[%d]' % (topic_res,topic_id)) if not Base.empty(question_chapter): chapter_res = db.exec_event(link_chapter_sql,q_id = int(question_id),c_id = int(question_chapter)) chapter_sql = db.get_last_sql() chapter_id = db.get_last_id() LOG.info('RES[%s] - INS[%d]' % (chapter_res,chapter_id)) except DBException as e: db.rollback() db.end_event() ret['code'] = 3 ret['message'] = '服务器错误' LOG.error('ERR[insert mysql error]') break else: ret['code'] = 3 ret['message'] = '服务器错误' LOG.error('ERROR[remote error]') break mongo = Mongo() try: mongo.connect('resource') mongo.select_collection('mongo_question_json') json_id = mongo.insert_one({"content":encode_json,"question_id":question_id}) LOG.info('MONGO[insert json] - DATA[%s] - INS[%s] - Question Id[%d]' % (json.dumps(encode_json),json_id,question_id)) mongo.select_collection('mongo_question_html') html_id = mongo.insert_one({"content":encode_html,"question_id":question_id}) LOG.info('MONGO[insert html] - DATA[%s] - INS[%s] - Question Id[%d]' % (json.dumps(encode_html),html_id,question_id)) except DBException as e: db.rollback() db.end_event() ret['code'] = 3 ret['message'] = '服务器错误' LOG.error('ERR[mongo exception]') break db.end_event() if int(ref): doit = Doit() doit.local_img(str(question_id)) LOG.info('Local Img [%s]' % str(question_id)) ret['code'] = 0 ret['message'] = 'success' ret['id'] = question_id LOG.info('PARAMETER OUT[%s]' % ret) LOG.info('API OUT[%s]' % (self.__class__.__name__)) self.write(json.dumps(ret)) self.finish()