速率限制与并发控制
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令牌桶支持突发后匀速消耗