MessageListener.py 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. from hub import methods, Global
  2. import threading
  3. import time
  4. import json
  5. # for linux
  6. save_dir = f"/home/server/logs"
  7. # for windows
  8. save_dir = r'C:\SRI-DINO.Server-py\logs'
  9. class MessageListener(object):
  10. """
  11. """
  12. @staticmethod
  13. def decorate_method(client, userdata, message):
  14. """消息处理方法"""
  15. file_name = methods.now_string('%Y-%m-%d.log')
  16. log_file_path = f"{save_dir}/{file_name}"
  17. log_dict = json.loads(message.payload)
  18. # methods.debug_log(f"MessageListener.20", f"#log_dict: {log_dict}")
  19. log_list = list()
  20. for i in range(1, 5):
  21. v = str(log_dict.get(str(i)))
  22. log_list.append(v)
  23. methods.write_text(log_file_path, '|'.join(log_list) + '\n', 'a')
  24. methods.debug_log(f"MessageListener25", f"#message.payload: {json.loads(message.payload)}")
  25. @classmethod
  26. def start_check_loop(cls):
  27. """"""
  28. # --- check ---
  29. # if not methods.is_dir(save_dir):
  30. # out = methods.run_command(f'mkdir -p {save_dir}', callback=True)
  31. # methods.debug_log('MessageListener33', f"#out: {out}")
  32. Global.emqx.start_subscribe_loop(
  33. decorate_method=MessageListener.decorate_method,
  34. subscribe_topic='bg/log'
  35. )
  36. @classmethod
  37. def run_background(cls, background_is=True):
  38. """"""
  39. p1 = threading.Thread(target=cls.start_check_loop)
  40. p1.start()
  41. if __name__ == '__main__':
  42. # --- test ---
  43. MessageListener.run_background()