event_processor.py 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. import json
  4. import time
  5. from models import Database as db
  6. from models import Log
  7. from models import Utils
  8. from models import EmitKind
  9. from models.initialize import app, logger
  10. __author__ = 'James Iter'
  11. __date__ = '2017/4/15'
  12. __contact__ = 'james.iter.cn@gmail.com'
  13. __copyright__ = '(c) 2017 by James Iter.'
  14. class EventProcessor(object):
  15. message = None
  16. log = Log()
  17. @classmethod
  18. def log_processor(cls):
  19. cls.log.set(type=cls.message['type'], timestamp=cls.message['timestamp'], host=cls.message['host'],
  20. message=cls.message['message'])
  21. cls.log.create()
  22. @classmethod
  23. def launch(cls):
  24. while True:
  25. if Utils.exit_flag:
  26. Utils.thread_counter -= 1
  27. print 'Thread EventProcessor say bye-bye'
  28. return
  29. try:
  30. host_log = db.r.lpop(app.config['host_event_report_queue'])
  31. if host_log is None:
  32. time.sleep(1)
  33. continue
  34. cls.message = json.loads(host_log)
  35. if cls.message['kind'] == EmitKind.log.value:
  36. cls.log_processor()
  37. if cls.message['kind'] == EmitKind.event.value:
  38. pass
  39. except Exception as e:
  40. logger.error(e.message)