main.py 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. import traceback
  4. import thread
  5. import signal
  6. import time
  7. import jimit as ji
  8. import json
  9. from flask import g
  10. from models import Utils
  11. from models.event_processor import EventProcessor
  12. from models.initialize import app, logger
  13. import api_route_table
  14. import views_route_table
  15. from models import Database as db
  16. from api.os_init import blueprint as os_init_blueprint
  17. from api.os_init import blueprints as os_init_blueprints
  18. from api.os_init_write import blueprint as os_init_write_blueprint
  19. from api.os_init_write import blueprints as os_init_write_blueprints
  20. from api.os_template import blueprint as os_template_blueprint
  21. from api.os_template import blueprints as os_template_blueprints
  22. from api.guest import blueprint as guest_blueprint
  23. from api.guest import blueprints as guest_blueprints
  24. from api.disk import blueprint as disk_blueprint
  25. from api.disk import blueprints as disk_blueprints
  26. from api.config import blueprint as config_blueprint
  27. from api.log import blueprint as log_blueprint
  28. from api.log import blueprints as log_blueprints
  29. from api.host import blueprint as host_blueprint
  30. from api.host import blueprints as host_blueprints
  31. from views.guest import blueprint as view_guest_blueprint
  32. from views.guest import blueprints as view_guest_blueprints
  33. __author__ = 'James Iter'
  34. __date__ = '2017/3/31'
  35. __contact__ = 'james.iter.cn@gmail.com'
  36. __copyright__ = '(c) 2017 by James Iter.'
  37. @app.before_request
  38. @Utils.dumps2response
  39. def r_before_request():
  40. try:
  41. g.ts = ji.Common.ts()
  42. except ji.JITError, e:
  43. ret = json.loads(e.message)
  44. return ret
  45. # noinspection PyBroadException
  46. try:
  47. db.init_conn_mysql()
  48. thread.start_new_thread(db.keepalived_mysql, ())
  49. db.init_conn_redis()
  50. app.register_blueprint(os_init_blueprint)
  51. app.register_blueprint(os_init_blueprints)
  52. app.register_blueprint(os_init_write_blueprint)
  53. app.register_blueprint(os_init_write_blueprints)
  54. app.register_blueprint(os_template_blueprint)
  55. app.register_blueprint(os_template_blueprints)
  56. app.register_blueprint(guest_blueprint)
  57. app.register_blueprint(guest_blueprints)
  58. app.register_blueprint(disk_blueprint)
  59. app.register_blueprint(disk_blueprints)
  60. app.register_blueprint(config_blueprint)
  61. app.register_blueprint(log_blueprint)
  62. app.register_blueprint(log_blueprints)
  63. app.register_blueprint(host_blueprint)
  64. app.register_blueprint(host_blueprints)
  65. app.register_blueprint(view_guest_blueprint)
  66. app.register_blueprint(view_guest_blueprints)
  67. except:
  68. logger.error(traceback.format_exc())
  69. if __name__ == '__main__':
  70. # noinspection PyBroadException
  71. try:
  72. signal.signal(signal.SIGTERM, Utils.signal_handle)
  73. signal.signal(signal.SIGINT, Utils.signal_handle)
  74. thread.start_new_thread(EventProcessor.launch, ())
  75. Utils.thread_counter += 1
  76. app.run(host=app.config['jimv_listen'], port=app.config['jimv_port'], use_reloader=False, threaded=True)
  77. while Utils.thread_counter > 0:
  78. time.sleep(1)
  79. print 'Main say bye-bye!'
  80. except:
  81. logger.error(traceback.format_exc())
  82. exit(-1)