def redisService(self, callback): ''' 返回纯缓存数据 :param srv: :param callback: :return: ''' ps = self.commonRequestParam() r = redis.GLOBAREDIS keys = r.keys(self._Srv["tableName"] + "*") p = r.pipeline() for k in keys: p.get(k) # r = json.dumps(p.execute(), cls=DateTimeEncoder, encoding='utf-8', ensure_ascii=False) r = p.execute() r = ",".join(map(lambda x: x.decode(), r)) self.writeResult("[%s]" % bytes(r, "utf-8").decode('raw_unicode_escape')) msglog.wirteMsg( r, self._Srv, uuid.uuid1().hex, { "clientid": self.request.remote_ip, "time": datetime.now(), "params": ps, "srv": self._Srv }) self.finish() callback()
def sqlService(self, callback): ''' 处理SQL服务,下面的程序没有检测传入参数的类型,错误的参数传入有可能出发500系统异常 :param srv: :return: ''' p = self.commonRequestParam() r = qsService.sqlService(self._Srv, p) if "errormsg" in r: self.render('msg.html', title=u"错误", msg=r["errormsg"]) self.finish() callback() else: self.writeResult(r["result"]) msglog.wirteMsg( "", self._Srv, uuid.uuid1().hex, { "clientid": self.request.remote_ip, "time": datetime.now(), "sptime": r["sptime"], "spdbtime": r["spdbtime"], "params": p }) self.finish() callback()
def datatableService(self, callback): ''' 处理数据封装服务 :param srv: :return: ''' p = self.commonRequestParam() r = qsService.tableService(self._Srv, p) if "errormsg" in r: self.render('msg.html', title=u"错误", msg=r["errormsg"]) self.finish() callback() else: self.writeResult(r["result"]) msglog.wirteMsg( "", self._Srv, uuid.uuid1().hex, { "clientid": self.request.remote_ip, "time": datetime.now(), "sptime": r["sptime"], "spdbtime": r["spdbtime"], "params": p }) self.finish() callback()
def on_response(response): spdbtime = (datetime.now() - dbtime).total_seconds() * 1000 # if response.error: # raise tornado.web.HTTPError(500) for h in response.headers: if h != 'Transfer-Encoding' and h != 'Content-Encoding': self.set_header(h, response.headers[h]) part.write(response.body) part.finish() msglog.wirteMsg( response.body, self._Srv, uuid.uuid1().hex, { "clientid": self.request.remote_ip, "time": datetime.now(), "sptime": (datetime.now() - starttime).total_seconds() * 1000, "spdbtime": spdbtime, "params": "" }) callback()
def doGO(self, path, method): st = (datetime.now()) self._Srv = redis.getfromRedis("SRV_URL_" + path) if self._Srv is None: self.render('msg.html', title=u"错误", msg=u"没有找到请求的服务") self.finish() return if self._Srv["enabled"] == 0: self.render('msg.html', title=u"错误", msg=u"该服务尚未启动") self.finish() return if not self.isValidRequest(): return r = msgcache.getResultFromCache(self) if (self._Srv["cachetype"] == "N") or (r is None): if self._Srv['type'] == 1: # WebService yield tornado.gen.Task(self.doProxy, path=path, method=method) elif self._Srv['type'] == 2: # RESTful yield tornado.gen.Task(self.doProxy, path=path, method=method) elif self._Srv['type'] == 5: # result = sqlService(request, srv) yield tornado.gen.Task(self.sqlService) elif self._Srv['type'] == 6: # result = datatableService(request, srv) yield tornado.gen.Task(self.datatableService) elif self._Srv['type'] == 7: yield tornado.gen.Task(self.redisService) else: self.render('msg.html', title=u"错误", msg=u"该服务类型不支持访问") self.finish() return else: # 缓存命中 self.write(r) self.finish() msglog.wirteMsg( "", self._Srv, uuid.uuid1().hex, { "clientid": self.request.remote_ip, "time": datetime.now(), "sptime": (datetime.now() - st).total_seconds() * 1000, "spdbtime": -1, "params": "" }) # 计算服务调用时间,更新服务计数器 dt = (datetime.now() - st).total_seconds() * 1000 GLOBAREDIS.incr("SRV_COUNT_" + str(self._Srv["serviceid"])) mt = GLOBAREDIS.mget([ "SRV_MAXTIME_" + str(self._Srv["serviceid"]), "SRV_MINTIME_" + str(self._Srv["serviceid"]) ]) if mt[0] == None: GLOBAREDIS.set("SRV_MAXTIME_" + str(self._Srv["serviceid"]), str(dt)) else: if dt > float(mt[0]): GLOBAREDIS.set("SRV_MAXTIME_" + str(self._Srv["serviceid"]), str(dt)) if mt[1] == None: GLOBAREDIS.set("SRV_MINTIME_" + str(self._Srv["serviceid"]), str(dt)) else: if dt < float(mt[1]): GLOBAREDIS.set("SRV_MINTIME_" + str(self._Srv["serviceid"]), str(dt)) if settings.DEBUG: settings.debugLogger.debug("".join([ "服务调用历时(ms),sid(", str(self._Srv["serviceid"]), "):", str(dt) ]))