@@ -376,10 +376,17 @@ async def dispatch_group(gid, pid, mode):
376376 )
377377
378378 tasks = []
379- for gid , pid , mode in all_targets :
379+ stagger = self .config_manager .get_stagger_seconds () or 2
380+ # 针对定时大任务加入交错等待,减少瞬间峰值延迟
381+ for idx , (gid , pid , mode ) in enumerate (all_targets ):
380382 if self ._terminating :
381383 logger .info ("检测到插件正在停止,取消后续任务创建" )
382384 break
385+
386+ # 为前几个任务添加微小的启动间隔,均匀分散 API 压力
387+ if idx > 0 and stagger > 0 :
388+ await asyncio .sleep (stagger )
389+
383390 task = asyncio .create_task (
384391 dispatch_group (gid , pid , mode ),
385392 name = f"report_{ mode } _{ gid } " ,
@@ -418,13 +425,13 @@ async def _perform_auto_analysis_for_group_with_timeout(
418425 ):
419426 """为指定群执行自动分析(带超时控制)"""
420427 try :
421- # 为每个群聊设置独立的超时时间(20分钟)
428+ # 为每个群聊设置独立的超时时间,适当放宽到 30 分钟以支持大型批次
422429 await asyncio .wait_for (
423430 self ._perform_auto_analysis_for_group (group_id , target_platform_id ),
424- timeout = 1200 ,
431+ timeout = 1800 ,
425432 )
426433 except asyncio .TimeoutError :
427- logger .error (f"群 { group_id } 分析超时(20分钟 ),跳过该群分析" )
434+ logger .error (f"群 { group_id } 分析超时(30分钟 ),跳过该群分析" )
428435 except Exception as e :
429436 logger .error (f"群 { group_id } 分析任务执行失败: { e } " )
430437
@@ -664,7 +671,7 @@ async def _perform_incremental_final_report_for_group_with_timeout(
664671 self ._perform_incremental_final_report_for_group (
665672 group_id , target_platform_id
666673 ),
667- timeout = 1200 ,
674+ timeout = 1800 ,
668675 )
669676
670677 # 判定是否需要触发回退 (例如:无增量数据等)
@@ -684,7 +691,7 @@ async def _perform_incremental_final_report_for_group_with_timeout(
684691 return result
685692
686693 except asyncio .TimeoutError :
687- logger .error (f"群 { group_id } 最终报告超时(20分钟 )" )
694+ logger .error (f"群 { group_id } 最终报告超时(30分钟 )" )
688695 if self .config_manager .get_incremental_fallback_enabled ():
689696 logger .warning (f"群 { group_id } 增量报告超时,正在回退到传统全量分析..." )
690697 return await self ._fallback_to_traditional (group_id , target_platform_id )
0 commit comments