@@ -41,6 +41,7 @@ def __init__(self):
4141 self .worker_processes : List [subprocess .Popen ] = []
4242 self .output_threads : List [threading .Thread ] = []
4343 self .is_worker_mode = False
44+ self ._log_enabled = True
4445
4546 def load_config (self ):
4647 if os .path .exists (CONFIG_FILE_PATH ):
@@ -60,7 +61,8 @@ def load_config(self):
6061 'helper_endpoint' : '' ,
6162 'launch_mode' : 'headless' ,
6263 'script_injection_enabled' : False ,
63- 'worker_mode_enabled' : False
64+ 'worker_mode_enabled' : False ,
65+ 'log_enabled' : True
6466 }
6567
6668 def save_config (self , config ):
@@ -73,16 +75,15 @@ def save_config(self, config):
7375 return False
7476
7577 async def broadcast_log (self , message : str , level : str = "INFO" ):
78+ if not self .active_connections or not self ._log_enabled :
79+ return
7680 timestamp = time .strftime ("%H:%M:%S" )
7781 log_entry = json .dumps ({
7882 "type" : "log" ,
7983 "time" : timestamp ,
8084 "level" : level ,
8185 "message" : message
8286 })
83-
84- if not self .active_connections :
85- return
8687
8788 to_remove = []
8889
@@ -460,6 +461,8 @@ def kill_process(self, pid: int) -> tuple[bool, str]:
460461async def lifespan (app : FastAPI ):
461462 global loop
462463 loop = asyncio .get_running_loop ()
464+ config = manager .load_config ()
465+ manager ._log_enabled = config .get ('log_enabled' , True )
463466 if WORKER_POOL_AVAILABLE :
464467 worker_pool .init_from_config ()
465468 yield
@@ -490,6 +493,7 @@ async def get_config():
490493
491494@app .post ("/api/config" )
492495async def save_config (config : Dict [str , Any ] = Body (...)):
496+ manager ._log_enabled = config .get ('log_enabled' , True )
493497 if manager .save_config (config ):
494498 return {"success" : True }
495499 raise HTTPException (status_code = 500 , detail = "保存失败" )
0 commit comments