main_sentinel.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import time
  2. import json
  3. from vs_types import GroupConfig
  4. from gco_wrapper import GCOWrapper
  5. from sentinel import SentinelGCO
  6. from logger_setup import setup_app_logger
  7. def main():
  8. app_logger = setup_app_logger("Sentinel")
  9. app_logger.info("Sentinel Logger is ready! All VSC macros are hooked.")
  10. # 读取配置文件
  11. with open("config/config.json", "r", encoding="utf-8") as f:
  12. cfg_data = json.load(f)
  13. redis_conf = cfg_data.get('redis')
  14. groups_conf = cfg_data.get('group_list')
  15. # 用于保存所有启动的 wrapper,方便后续退出时清理
  16. wrappers = []
  17. # 遍历 JSON 数组中的每一个组别配置
  18. for item in groups_conf:
  19. cfg = GroupConfig.from_json(item)
  20. if not cfg.enable:
  21. app_logger.info(f"Group [{cfg.identifier}] is disabled. Skipping.")
  22. continue
  23. app_logger.info(f"Starting wrapper for group [{cfg.identifier}]...")
  24. wrapper = GCOWrapper(gco_class=SentinelGCO, gco_cfg=cfg, redis_conf=redis_conf)
  25. wrapper.load()
  26. wrapper.start()
  27. wrappers.append(wrapper)
  28. app_logger.info(f"Successfully started {len(wrappers)} Sentinel groups. Press Ctrl+C to stop.")
  29. try:
  30. while True:
  31. time.sleep(1)
  32. except KeyboardInterrupt:
  33. app_logger.info("Shutting down Sentinels...")
  34. for wrapper in wrappers:
  35. wrapper.stop()
  36. if __name__ == "__main__":
  37. main()