/websdk/application.py

https://github.com/ss1917/ops_sdk · Python · 73 lines · 47 code · 13 blank · 13 comment · 11 complexity · 5f4f7a8f7e200201d82f2139ed7cfc1d MD5 · raw file

  1. #!/usr/bin/env python
  2. # -*-coding:utf-8-*-
  3. """
  4. Author : ming
  5. date : 2018年1月12日13:43:27
  6. role : 定制 Application
  7. """
  8. from shortuuid import uuid
  9. from tornado import httpserver, ioloop
  10. from tornado import options as tnd_options
  11. from tornado.options import options, define
  12. from tornado.web import Application as tornadoApp
  13. from tornado.web import RequestHandler
  14. from .web_logs import ins_log
  15. from .configs import configs
  16. define("addr", default='0.0.0.0', help="run on the given ip address", type=str)
  17. define("port", default=8000, help="run on the given port", type=int)
  18. define("progid", default=str(uuid()), help="tornado progress id", type=str)
  19. urls_meta_list = []
  20. class Application(tornadoApp):
  21. """ 定制 Tornado Application 集成日志、sqlalchemy 等功能 """
  22. def __init__(self, handlers=None, default_host="", transforms=None, **settings):
  23. tnd_options.parse_command_line()
  24. if configs.can_import: configs.import_dict(**settings)
  25. ins_log.read_log('info', '%s' % options.progid)
  26. handlers.extend([(r"/v1/probe/meta/urls/", MetaProbe), ])
  27. self.urls_meta_handle(handlers)
  28. max_buffer_size = configs.get('max_buffer_size')
  29. max_body_size = configs.get('max_body_size')
  30. super(Application, self).__init__(handlers, default_host, transforms, **configs)
  31. http_server = httpserver.HTTPServer(self, max_buffer_size=max_buffer_size, max_body_size=max_body_size)
  32. http_server.listen(options.port, address=options.addr)
  33. self.io_loop = ioloop.IOLoop.instance()
  34. def start_server(self):
  35. """
  36. 启动 tornado 服务
  37. :return:
  38. """
  39. try:
  40. ins_log.read_log('info', 'progressid: %(progid)s' % dict(progid=options.progid))
  41. ins_log.read_log('info', 'server address: %(addr)s:%(port)d' % dict(addr=options.addr, port=options.port))
  42. ins_log.read_log('info', 'web server start sucessfuled.')
  43. self.io_loop.start()
  44. except KeyboardInterrupt:
  45. self.io_loop.stop()
  46. except:
  47. import traceback
  48. ins_log.read_log('error', '%(tra)s' % dict(tra=traceback.format_exc()))
  49. def urls_meta_handle(self, urls):
  50. ### 数据写入内存启动的时候上报至权限管理
  51. urls_meta_list.extend([{"url": u[0], "name": u[2].get('handle_name')[0:30] if u[2].get('handle_name') else "",
  52. "status": u[2].get('handle_status')[0:2] if u[2].get('handle_status') else "y"} if len(
  53. u) > 2 else {"url": u[0], "name": "暂无", "status": "y"} for u in urls])
  54. class MetaProbe(RequestHandler):
  55. def head(self, *args, **kwargs):
  56. self.write(dict(code=0, msg="Get success", count=len(urls_meta_list), data=urls_meta_list))
  57. def get(self, *args, **kwargs):
  58. self.write(dict(code=0, msg="Get success", count=len(urls_meta_list), data=urls_meta_list))
  59. if __name__ == '__main__':
  60. pass