使用Google Gemini时遭遇资源耗尽429错误求助
问题分析与解决方案
你的判断完全正确——问题出在并发请求速度过快,而非总请求数超过每分钟30次的限制。
Google Gemini的免费Tier限制不止有「每分钟请求数」,还暗藏并发请求数上限(同一时间允许处理的请求数量)。免费版的并发上限大概率低于20,当你用asyncio.gather一次性发起20个请求时,瞬间打满了并发额度,直接触发429错误;而分两次发15个请求时,每次的并发数(15)没超过上限,所以能正常执行。
解决办法
1. 限制并发请求数
用asyncio.Semaphore控制同时发起的请求数量,确保同一时间的请求数不超过Gemini的并发上限。比如把并发数设为10:
async def async_rate_ideas(): # 限制同一时间最多10个请求 semaphore = asyncio.Semaphore(10) async def bounded_rate_ideas(): async with semaphore: return await rate_ideas(7) get_responses = [bounded_rate_ideas() for i in range(n)] return await asyncio.gather(*get_responses)
2. 增加请求间隔(可选)
如果限制并发后仍有问题,可以给每个请求加短延迟,避免请求过于集中:
async def async_rate_ideas(): semaphore = asyncio.Semaphore(10) async def bounded_rate_ideas(): async with semaphore: # 每个请求前等待0.1秒,分散请求时间 await asyncio.sleep(0.1) return await rate_ideas(7) get_responses = [bounded_rate_ideas() for i in range(n)] return await asyncio.gather(*get_responses)
3. 确认官方隐性限制
建议仔细核对Gemini的免费版文档,部分隐性限制(比如每秒请求数QPS、并发数)可能没在主限制说明里明确标注,找到具体上限后再调整参数会更精准。
内容的提问来源于stack exchange,提问作者Renze
相关产品推荐
相关产品推荐

