mirror of
https://github.com/Nezumi-2711/astrbot_plugin_qq_group_daily_analysis.git
synced 2026-09-22 13:38:43 +00:00
feat: 实现群聊分析任务锁及全局资源并发限流控制
1. 任务锁定机制 (Group Task Locking): - 在应用服务层实现基于群组和任务类型的异步锁,使用 asynccontextmanager 生成器函数确保同一群聊在同一时间只能执行一个分析任务。 - 使用弱引用字典 (WeakValueDictionary) 管理锁实例,防止长期的内存占用。 - 在指令入口增加对 CancelledError 的捕获,当任务冲突时向用户反馈“任务正在执行中”的友好提示。 2. 全局并发限流重构 (Resource-level Throttling): - 资源层限流下沉:将并发控制中心从调度层迁移至具体的资源处理层(T2I/LLM)。 - T2I 渲染保护:在报告生成器中引入全局信号量,严格控制 T2I 引擎的瞬时负载。 - LLM API 保护:在应用服务层引入全局信号量,平滑所有分析请求对 LLM 提供商接口的请求频率。 - 调度逻辑简化:移除调度器内部冗余的信号量,使其仅专注于分发逻辑与 Stagger(交错启动)平滑。 3. 调度与反馈优化: - 自动分析调度器增加对“跳过”任务的独立统计,并在执行报告中清晰展示“成功、跳过、失败”的具体数量。 - 优化了管理测试指令和增量分析指令的异常处理逻辑。 4. 消息重复发送防护: - 在重试组件中增加基于消息历史记录的探活逻辑。在重试发送前先核实记录,确认是否已因网络抖动导致“假失败”但已实达,有效拦截重复消息。
This commit is contained in:
+1
-1
@@ -116,7 +116,7 @@
|
||||
"max_concurrent_tasks": {
|
||||
"type": "int",
|
||||
"description": "自动分析最大并发数",
|
||||
"default": 3,
|
||||
"default": 1,
|
||||
"hint": "同时进行的群聊分析任务数量,建议根据机器性能和服务商情况调整,过高可能导致LLM API RPM 超出限制,卡顿或被风控"
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user