问题域/PD-313

速率限制与并发控制

Rate Limiting & Concurrency Control

全局单例速率限制器、Worker池并发控制、异步信号量协调多层并发请求

子问题

1.全局vs局部速率限制

2.多实例共享限流

3.并发数动态调整

4.API配额保护

5.递归任务指数展开的并发收敛策略

6.同步爬虫库在异步架构中的线程池桥接

7.asyncio.Lock延迟初始化与事件循环绑定

各项目的解法1 solutions

Signals

横向对比

维度GPT-Researcher
限流架构三层分离:全局爬虫限流 + WorkerPool并发 + LLM API令牌桶
全局协调GlobalRateLimiter单例,__new__实现,跨所有WorkerPool共享
并发模型asyncio.Semaphore + ThreadPoolExecutor双层,async/sync混合
配置方式环境变量+配置文件注入,默认不限流(delay=0)
递归控制breadth逐层减半自然收敛,局部Semaphore限制每层并发
令牌桶OpenRouter用LangChain InMemoryRateLimiter,max_bucket_size=10突发

最佳实践

1.单例GlobalRateLimiter确保跨实例全局限流

2.Semaphore+ThreadPoolExecutor双层并发控制

3.breadth逐层减半自然收敛递归并发量

4.asynccontextmanager封装throttle实现自动释放

5.InMemoryRateLimiter令牌桶支持突发后匀速消耗