ServerWrapper.py 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. import os
  2. import tornado.gen
  3. import tornado.httpclient
  4. import tornado.httpserver
  5. import tornado.ioloop
  6. import tornado.options
  7. import tornado.web
  8. from tornado.options import define, options,OptionParser
  9. from model.common.file_pid import PID
  10. from urls import urls
  11. from model.log import logger
  12. import requests
  13. import time
  14. import sys
  15. log = logger()
  16. iTime = 300
  17. define("port", default=sys.argv[1], help="run on the given port", type=int)
  18. class HttpServerWrapper(tornado.web.Application):
  19. def __init__(self, port=80,debug=True):
  20. self.port = port
  21. handlers = urls
  22. #默认为开发环境,只有当dev输入时为生产环境
  23. auth = True if 'pro' in OptionParser().parse_command_line() and sys.argv[1] == '8008' else False
  24. if auth:
  25. print('生产环境,启动')
  26. else:
  27. print('测试环境,启动')
  28. settings = {
  29. "port" : sys.argv[1],
  30. "auth": auth,
  31. "cookie_secret": "",
  32. "login_url": "",
  33. "autoreload": True,
  34. "debug": False,
  35. "allow_remote_access": True,
  36. "template_path": os.path.join(os.path.dirname(__file__), "templates"),
  37. "static_path": os.path.join(os.path.dirname(__file__), "templates")
  38. }
  39. super(HttpServerWrapper, self).__init__(handlers, **settings)
  40. def get_ip(self):
  41. for i in range(30):
  42. time.sleep(1)
  43. try:
  44. r = requests.get("http://jsonip.com").json()['ip']
  45. print(r)
  46. return r
  47. except:
  48. print('获取ip,出错')
  49. pass
  50. raise
  51. def main():
  52. #TODO:日志这部分需要设置一下,有问题
  53. PID.write()
  54. tornado.options.parse_command_line()
  55. http_server = tornado.httpserver.HTTPServer(HttpServerWrapper())
  56. http_server.listen(options.port)
  57. log.info("server start, listening on port %s" % options.port)
  58. tornado.ioloop.IOLoop.current().start()
  59. if __name__ == '__main__':
  60. main()