HandlerBase.py 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. import simplejson as json
  2. import traceback
  3. from datetime import date
  4. from concurrent.futures import ThreadPoolExecutor
  5. from tornado.web import RequestHandler
  6. from model.log import logger
  7. from model.common import errors
  8. log = logger()
  9. class BaseHandler(RequestHandler):
  10. def __init__(self, application, request, **kwargs):
  11. RequestHandler.__init__(self, application, request, **kwargs)
  12. self._status_code = 200
  13. self.executor = ThreadPoolExecutor(200)
  14. self.settings['allow_remote_access']=True
  15. origin_url = self.request.headers.get('Origin')
  16. self.set_header('Content-Type', 'application/json')
  17. self.set_header("Access-Control-Allow-Methods", "GET,PUT,POST,DELETE,OPTIONS")
  18. self.set_header("Access-Control-Allow-Headers", "Content-Type, Depth, User-Agent, Token, Origin, X-Requested-With, Accept, Authorization, admin_id")
  19. self.set_header('Access-Control-Allow-Origin', origin_url)
  20. self.set_header("Access-Control-Allow-Credentials", "true")
  21. def write_json(self, data, status_code=200, msg='success'):
  22. self.write(json.dumps({'status': {'msg': msg, "RetCode": status_code}, 'data': data}))
  23. def get_args(self):
  24. di=json.loads(self.request.body.decode())
  25. if isinstance(di,str):
  26. di=json.loads(di)
  27. return di
  28. def write_error(self, status_code, msg=None, **kwargs):
  29. if self.settings.get("serve_traceback") and "exc_info" in kwargs:
  30. # in debug mode, try to send a traceback
  31. lines = []
  32. for line in traceback.format_exception(*kwargs["exc_info"]):
  33. lines.append(line)
  34. self.write_json(dict(traceback=''.join(lines)), status_code, self._reason)
  35. elif msg:
  36. self.write_json(None, status_code, msg)
  37. else:
  38. self.write_json(None, status_code, self._reason)
  39. def _authentication(self):
  40. """
  41. :return: True, 认证通过, False 认证不通过
  42. """
  43. return True
  44. log.info("author %s" % self.request.headers)
  45. # log.info(self.request.remote_ip)
  46. if self.request.headers.get("Gip_real") == '183.129.168.74':
  47. return True
  48. if not self.request.headers.get("Authorization"):
  49. return False
  50. else:
  51. # redis 中判断值是否存在
  52. # ur = UserRedisComm()
  53. # key = "admin_account_check%s" % (self.request.headers.get("Authorization"))
  54. # return True if ur.r.get(key) else False
  55. return True