多进程并发控制
Multi-Process Concurrency Control
单进程/多进程统一锁抽象,支持Gunicorn多worker模式下的数据一致性
子问题
1.asyncio与multiprocessing锁统一
2.keyed lock死锁预防
3.锁资源自动清理
4.跨进程状态同步
5.多进程模式下同步锁阻塞事件循环
6.锁获取中途被 asyncio.CancelledError 中断的回滚
7.多租户 workspace 级锁隔离
各项目的解法1 solutions
Signals
横向对比
| 维度 | LightRAG |
|---|---|
| 锁抽象层级 | 三层:UnifiedLock → KeyedUnifiedLock → NamespaceLock |
| 并发模型 | asyncio + multiprocessing.Manager 双层锁,运行时按 worker 数切换 |
| 死锁预防 | sorted(keys) 全局排序获取 + ContextVar 防重入 |
| 锁资源管理 | 引用计数 + 300s TTL + 500阈值批量清理 |
| 取消安全 | asyncio.shield 保护 __aexit__ 和 rollback,CancelledError 安全 |
| 工作区隔离 | workspace:namespace 前缀实现多租户锁隔离 |
最佳实践
1.排序获取防死锁
2.ContextVar实现协程隔离
3.asyncio.shield保护锁释放
4.双层锁策略:async_lock 门卫 + process_lock 互斥
5.引用计数+TTL+阈值三重条件触发锁清理
6.ContextVar.set 延迟到锁获取成功后防止状态污染