mirror of
https://github.com/snailyp/gemini-balance.git
synced 2026-09-08 01:06:37 +08:00
fix: 修复以第一个key获取模型列表,如果key失效将无法获取模型的问题
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import asyncio
|
||||
import random
|
||||
from itertools import cycle
|
||||
from typing import Dict, Union
|
||||
|
||||
@@ -195,6 +196,25 @@ class KeyManager:
|
||||
return ""
|
||||
return self.api_keys[0]
|
||||
|
||||
async def get_random_valid_key(self) -> str:
|
||||
"""获取随机的有效API key"""
|
||||
valid_keys = []
|
||||
async with self.failure_count_lock:
|
||||
for key in self.key_failure_counts:
|
||||
if self.key_failure_counts[key] < self.MAX_FAILURES:
|
||||
valid_keys.append(key)
|
||||
|
||||
if valid_keys:
|
||||
return random.choice(valid_keys)
|
||||
|
||||
# 如果没有有效的key,返回第一个key作为fallback
|
||||
if self.api_keys:
|
||||
logger.warning("No valid keys available, returning first key as fallback.")
|
||||
return self.api_keys[0]
|
||||
|
||||
logger.warning("API key list is empty, cannot get random valid key.")
|
||||
return ""
|
||||
|
||||
|
||||
_singleton_instance = None
|
||||
_singleton_lock = asyncio.Lock()
|
||||
|
||||
Reference in New Issue
Block a user