| 12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- # main_server.py
- import threading
- import time
- import os
- from core.app_manager import AppManager
- from web.server import run_web_server
- from vs_log_macros import VSC_INFO
- def main():
- # 1. 确保目录存在
- if not os.path.exists("config"): os.makedirs("config")
- if not os.path.exists("plugins"): os.makedirs("plugins")
-
- # 2. 初始化 AppManager
- manager = AppManager.Instance()
-
- # 3. 加载配置
- VSC_INFO("main", "Loading configurations...")
- manager.load_configs()
-
- # 4. 自动启动 enabled 的组
- VSC_INFO("main", "Starting enabled groups...")
- manager.start_all()
-
- # 5. 启动 Web Server (在主线程运行,或者新线程)
- #由于 uvicorn.run 是阻塞的,我们直接在主线程跑 Web,
- # 后台的 GroupCoordinators 已经在各自的线程里跑了。
- VSC_INFO("main", "Starting Web API on port 8000...")
- try:
- run_web_server()
- while True:
- time.sleep(3600)
- except KeyboardInterrupt:
- pass
- finally:
- # 退出时清理
- VSC_INFO("main", "Shutting down...")
- # 停止所有组
- for gid in list(manager.coordinators.keys()):
- manager.stop_group(gid)
- if __name__ == "__main__":
- main()
|