异步并发限流
Async Concurrency Throttling
异步函数调用的并发限流与超时管理,防止LLM/Embedding API过载
子问题
1.并发上限控制
2.超时管理
3.优先级队列
4.批量处理调度
5.卡死任务检测与 Worker 自动恢复
6.队列容量溢出防护
7.Worker 系统优雅关闭与资源清理
各项目的解法1 solutions
Signals
横向对比
| 维度 | LightRAG |
|---|---|
| 并发模型 | PriorityQueue + Worker 池,非 Semaphore |
| 超时策略 | 三层动态超时:Worker(2×base) → HealthCheck(2×base+15) → User |
| 优先级支持 | asyncio.PriorityQueue 原生优先级,低值优先 |
| 健康检查 | 独立协程 5s 轮询检测卡死任务并自动恢复 Worker |
| 差异化配置 | LLM(4并发/180s) vs Embedding(8并发/30s) 独立参数 |
| 批量控制 | 文档插入用独立 Semaphore(默认2),与 API 限流双层隔离 |
最佳实践
1.装饰器模式透明限流
2.区分LLM和Embedding的超时阈值
3.基于 base_timeout 动态推导多层超时值避免硬编码
4.execution_start_time 与 start_time 分离防止误杀排队任务
5.weakref.WeakSet 追踪 Future 防止内存泄漏