@@ -63,21 +63,23 @@ class Task:
6363 end_time: 结束时间
6464 return_code: 命令返回值
6565 duration: 执行时长
66+ silent: 是否静默执行(不发送消息通知)
6667 """
6768
6869 STATUS_PENDING = "pending"
6970 STATUS_RUNNING = "running"
7071 STATUS_COMPLETED = "completed"
7172 STATUS_FAILED = "failed"
7273
73- def __init__ (self , name : str , command : str , status : str = STATUS_PENDING ):
74+ def __init__ (self , name : str , command : str , status : str = STATUS_PENDING , silent : bool = False ):
7475 """
7576 初始化任务实例
7677
7778 Args:
7879 name: 任务名称
7980 command: 要执行的命令行字符串
8081 status: 初始状态,默认为"pending"
82+ silent: 是否静默执行(不发送消息通知),默认为False
8183 """
8284 self .name = name
8385 self .command = command
@@ -89,6 +91,7 @@ def __init__(self, name: str, command: str, status: str = STATUS_PENDING):
8991 self .error_message = None
9092 self .duration = None
9193 self .monitor = None
94+ self .silent = silent
9295
9396 def to_dict (self ) -> Dict [str , Any ]:
9497 """
@@ -105,7 +108,8 @@ def to_dict(self) -> Dict[str, Any]:
105108 "end_time" : self .end_time .strftime ('%Y-%m-%d %H:%M:%S' ) if self .end_time else None ,
106109 "duration" : str (self .duration ) if self .duration else "未完成" ,
107110 "return_code" : self .return_code ,
108- "error_message" : self .error_message
111+ "error_message" : self .error_message ,
112+ "silent" : self .silent
109113 }
110114
111115 def update_duration (self ):
@@ -241,6 +245,11 @@ def load_tasks(self):
241245 从配置文件加载初始任务
242246
243247 配置文件应为YAML格式,包含任务列表,每个任务需指定名称和命令
248+ 任务可以包含以下参数:
249+ - name: 任务名称(必需)
250+ - command: 要执行的命令(必需)
251+ - status: 任务状态(可选,默认为"pending")
252+ - silent: 是否静默执行(可选,默认为False,设为True时不发送消息通知)
244253 """
245254 try :
246255 with open (self .config_path , 'r' , encoding = 'utf-8' ) as f :
@@ -253,7 +262,8 @@ def load_tasks(self):
253262 task = Task (
254263 name = task_config ['name' ],
255264 command = task_config ['command' ],
256- status = task_config .get ('status' , 'pending' )
265+ status = task_config .get ('status' , 'pending' ),
266+ silent = task_config .get ('silent' , False )
257267 )
258268 self .add_task (task )
259269
@@ -275,18 +285,19 @@ def add_task(self, task: Task):
275285 self .total_tasks += 1
276286 self .logger .info (f"新任务已添加: { task .name } " )
277287
278- def add_task_by_config (self , name : str , command : str ):
288+ def add_task_by_config (self , name : str , command : str , silent : bool = False ):
279289 """
280290 通过参数添加新任务
281291
282292 Args:
283293 name: 任务名称
284294 command: 要执行的命令
295+ silent: 是否静默执行(不发送消息通知),默认为False
285296
286297 Returns:
287298 Task: 新添加的任务实例
288299 """
289- task = Task (name = name , command = command )
300+ task = Task (name = name , command = command , silent = silent )
290301 self .add_task (task )
291302 return task
292303
@@ -381,6 +392,9 @@ def execute_task(self, task: Task) -> bool:
381392 self .logger .info (f"开始执行任务: { task .name } " )
382393 self .logger .info (f"执行命令: { task .command } " )
383394
395+ if task .silent :
396+ self .logger .info ("任务设置为静默模式,不会发送消息通知" )
397+
384398 task .start ()
385399
386400 try :
@@ -399,7 +413,8 @@ def execute_task(self, task: Task) -> bool:
399413 process_name = task .name ,
400414 process_cmd = task .command ,
401415 logger = self .logger ,
402- start_time = task .start_time
416+ start_time = task .start_time ,
417+ silent = task .silent # 传递静默模式设置
403418 )
404419 task .monitor .start ()
405420
@@ -459,7 +474,8 @@ def check_new_tasks(self):
459474 task = Task (
460475 name = task_config ['name' ],
461476 command = task_config ['command' ],
462- status = task_config .get ('status' , 'pending' )
477+ status = task_config .get ('status' , 'pending' ),
478+ silent = task_config .get ('silent' , False )
463479 )
464480 self .add_task (task )
465481
@@ -518,6 +534,8 @@ def run(self):
518534 def stop (self ):
519535 """
520536 停止任务流管理器并发送总结报告
537+
538+ 如果所有任务都是静默模式,则不发送总结报告
521539 """
522540 self .stop_event .set ()
523541 self .logger .info ("正在停止任务流管理器..." )
@@ -526,15 +544,23 @@ def stop(self):
526544 if self .running :
527545 self .end_time = datetime .now ()
528546 summary = self .generate_summary ()
529- self .logger .info ("发送任务总结报告... " )
530- self .logger .info (summary ) # 在日志中也记录摘要
547+ self .logger .info ("任务总结报告: " )
548+ self .logger .info (summary ) # 在日志中记录摘要
531549
532- # 发送总结报告
533- Msg_push (
534- title = "任务流管理器执行报告" ,
535- content = summary ,
536- logger = self .logger
537- )
550+ # 检查是否所有任务都是静默模式
551+ all_silent = all (task .silent for task in self .tasks if len (self .tasks ) > 0 )
552+
553+ # 只有在非静默模式下才发送总结报告
554+ if not all_silent :
555+ # 发送总结报告
556+ self .logger .info ("发送任务总结报告..." )
557+ Msg_push (
558+ title = "任务流管理器执行报告" ,
559+ content = summary ,
560+ logger = self .logger
561+ )
562+ else :
563+ self .logger .info ("所有任务都设置为静默模式,跳过发送总结报告" )
538564
539565 def is_running (self ) -> bool :
540566 """
0 commit comments