需构建四类调度器:一、轮询式均衡密钥分发;二、加权式依据响应延迟动态选密钥;三、健康探活式自动剔除故障密钥;四、令牌桶式为各密钥独立限流防超频。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您希望调用 Gemini API 时避免单点过载、提升请求成功率与响应稳定性,则需要一个能动态分配请求到多个 API 密钥或代理端点的调度器。以下是实现该目标的具体方法:
一、基于轮询策略的多密钥调度器
该方法通过维护一组有效 Gemini API 密钥,按顺序循环分发请求,确保各密钥调用量均衡,避免单密钥因速率限制被临时封禁。
1、准备一个包含多个 Google API 密钥的列表,例如 ["AIzaSyA...", "AIzaSyB...", "AIzaSyC..."]。
2、初始化一个索引变量 self._index = 0,用于记录当前轮询位置。
立即学习“Python免费学习笔记(深入)”;
3、每次发起请求前,使用 key = keys[self._index % len(keys)] 获取当前密钥,并执行 self._index += 1 更新索引。
4、将密钥拼入请求 URL,如 f"https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key={key}"。
二、基于响应延迟反馈的加权调度器
该方法根据各密钥历史请求的平均响应时间动态调整权重,响应越快的密钥获得更高调度概率,实现更精细的负载感知。
1、为每个密钥维护一个延迟统计队列(如保存最近 5 次耗时),初始权重设为 1.0。
2、每次完成请求后,记录耗时 t_ms 并更新对应密钥的平均延迟 avg_delay[key] = (avg_delay[key] * 4 + t_ms) / 5。
3、计算反向权重:weight[key] = max(0.1, 1000.0 / (avg_delay[key] + 1)),确保低延迟密钥获得更高选择机会。
使用AIsa生成图像与视频。仅需一个API密钥即可调用Gemini 3 Pro Image(图像)和Qwen Wan 2.6(视频)。
4、使用 random.choices(keys, weights=list(weights.values()))[0] 按权重随机选取密钥。
三、基于健康探活的故障隔离调度器
该方法定期对每个密钥发起轻量探测请求(如空 content 的 health check),自动剔除连续失败的密钥,防止无效密钥持续占用请求流量。
1、定义探测端点:f"https://generativelanguage.googleapis.com/v1beta/models?key={key}",仅需 GET 请求。
2、为每个密钥设置状态字段 is_healthy: bool 和失败计数器 fail_count。
3、每 30 秒启动一个后台线程,对所有密钥并发发起探测;若 HTTP 状态码非 200 或超时,则 fail_count += 1,连续 3 次失败则置 is_healthy = False。
4、主调度逻辑中仅从 [k for k in keys if status[k].is_healthy] 中选取密钥。
四、基于令牌桶限流的请求节制器
该方法为每个密钥独立配置令牌桶,控制单位时间内最大请求数,防止突发流量触发 Gemini 的 per-key QPS 限制(如 60 RPM)。
1、为每个密钥初始化一个令牌桶:容量 capacity = 60,恢复速率 rate_per_sec = 1.0。
2、每次请求前调用 bucket.consume(),若返回 False 则跳过该密钥,尝试下一个。
3、在独立定时器中每秒调用 bucket.add_tokens(min(capacity - bucket.tokens, rate_per_sec)) 补充令牌。
4、将令牌桶对象与密钥一一绑定,存入字典 bucket_map = {key: TokenBucket(60, 1.0)}。

















