main_server.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. # main_server.py
  2. import threading
  3. import time
  4. import os
  5. from core.app_manager import AppManager
  6. from web.server import run_web_server
  7. from vs_log_macros import VSC_INFO
  8. def main():
  9. # 1. 确保目录存在
  10. if not os.path.exists("config"): os.makedirs("config")
  11. if not os.path.exists("plugins"): os.makedirs("plugins")
  12. # 2. 初始化 AppManager
  13. manager = AppManager.Instance()
  14. # 3. 加载配置
  15. VSC_INFO("main", "Loading configurations...")
  16. manager.load_configs()
  17. # 4. 自动启动 enabled 的组
  18. VSC_INFO("main", "Starting enabled groups...")
  19. manager.start_all()
  20. # 5. 启动 Web Server (在主线程运行,或者新线程)
  21. #由于 uvicorn.run 是阻塞的,我们直接在主线程跑 Web,
  22. # 后台的 GroupCoordinators 已经在各自的线程里跑了。
  23. VSC_INFO("main", "Starting Web API on port 8000...")
  24. try:
  25. # run_web_server()
  26. while True:
  27. time.sleep(3600)
  28. except KeyboardInterrupt:
  29. pass
  30. finally:
  31. # 退出时清理
  32. VSC_INFO("main", "Shutting down...")
  33. # 停止所有组
  34. for gid in list(manager.coordinators.keys()):
  35. manager.stop_group(gid)
  36. if __name__ == "__main__":
  37. main()