refactor(websocket): 移除连接池模式并改进资源清理
移除 WebSocket 连接池实现,改为单连接模式以简化代码结构 在 main 函数中添加资源清理逻辑,确保程序退出时正确关闭所有资源 改进 base64 数据处理逻辑,支持递归处理嵌套结构中的敏感数据 呵呵线程池加WS是神人
This commit is contained in:
21
main.py
21
main.py
@@ -158,12 +158,13 @@ async def main():
|
||||
else:
|
||||
logger.warning(f"插件目录不存在 {plugin_path}")
|
||||
|
||||
websocket_client = None
|
||||
try:
|
||||
# 初始化代码执行器
|
||||
code_executor = initialize_executor(config)
|
||||
|
||||
# 使用连接池模式初始化 WebSocket 客户端
|
||||
websocket_client = WS(code_executor=code_executor, use_pool=True)
|
||||
# 初始化 WebSocket 客户端
|
||||
websocket_client = WS(code_executor=code_executor)
|
||||
|
||||
# 启动代码执行器的后台 worker
|
||||
logger.debug("[Main] 检查是否需要启动代码执行 Worker...")
|
||||
@@ -174,10 +175,21 @@ async def main():
|
||||
logger.warning("[Main] 未启动代码执行 Worker,因为 Docker 客户端未初始化或连接失败。")
|
||||
|
||||
await websocket_client.connect()
|
||||
except asyncio.CancelledError:
|
||||
logger.info("主任务被取消,正在停止...")
|
||||
finally:
|
||||
logger.info("正在清理资源...")
|
||||
if observer.is_alive():
|
||||
observer.stop()
|
||||
observer.join()
|
||||
|
||||
if websocket_client:
|
||||
await websocket_client.close()
|
||||
|
||||
# 关闭浏览器管理器
|
||||
await browser_manager.shutdown()
|
||||
|
||||
logger.success("资源清理完成,程序退出。")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
@@ -193,8 +205,9 @@ if __name__ == "__main__":
|
||||
try:
|
||||
asyncio.run(main())
|
||||
except KeyboardInterrupt:
|
||||
main_logger.info("程序已被用户中断")
|
||||
exit(0)
|
||||
# 捕获 KeyboardInterrupt,不做任何操作,让 asyncio.run 正常结束
|
||||
# 这样 main 函数中的 finally 块会被执行
|
||||
pass
|
||||
except Exception as e:
|
||||
main_logger.exception("程序发生未处理的全局异常")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user