Moonfanz commited on
Commit
1b09f48
·
verified ·
1 Parent(s): 25ef4b4

Upload 4 files

Browse files
Files changed (1) hide show
  1. app.py +24 -9
app.py CHANGED
@@ -4,6 +4,7 @@ from google.api_core.exceptions import InvalidArgument, ResourceExhausted, Abort
4
  import google.generativeai as genai
5
  import json
6
  import os
 
7
  import logging
8
  import func
9
  from datetime import datetime, timedelta
@@ -56,10 +57,9 @@ safety_settings = [
56
  "threshold": "BLOCK_NONE"
57
  },
58
  ]
59
-
60
  class APIKeyManager:
61
  def __init__(self):
62
- self.api_keys = os.environ.get('KeyArray').split(',')
63
  self.current_index = 0
64
 
65
  def get_available_key(self):
@@ -74,7 +74,7 @@ class APIKeyManager:
74
  return current_key
75
 
76
  logger.error("所有API key都已耗尽或被暂时禁用,请重新配置或稍后重试")
77
- return None
78
 
79
  def show_all_keys(self):
80
  logger.info(f"当前可用API key个数: {len(self.api_keys)} ")
@@ -117,7 +117,7 @@ GEMINI_MODELS = [
117
 
118
  @app.route('/')
119
  def index():
120
- main_content = "Moonfanz Reminiproxy v2.1.2 2025-01-09"
121
  html_template = """
122
  <!DOCTYPE html>
123
  <html>
@@ -192,17 +192,32 @@ def handle_api_error(error, attempt):
192
  switch_api_key()
193
  return 0, None
194
 
195
- elif isinstance(error, (ResourceExhausted, Aborted, InternalServerError, ServiceUnavailable)):
196
  delay = min(RETRY_DELAY * (2 ** attempt), MAX_RETRY_DELAY)
197
- if isinstance(error, ResourceExhausted):
198
- logger.warning(f"{current_api_key[:11]} → 429 官方资源耗尽 → {delay} 秒后重试...")
199
- else:
200
- logger.warning(f"{current_api_key[:11]} → 未知错误↙ {delay} 秒后重试...\n{error}\n")
201
  key_manager.blacklist_key(current_api_key)
202
  switch_api_key()
203
  time.sleep(delay)
204
  return 0, None
205
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
206
  elif isinstance(error, PermissionDenied):
207
  logger.error(f"{current_api_key[:11]} → 403 权限被拒绝,该 API KEY 可能已经被官方封禁")
208
  key_manager.blacklist_key(current_api_key)
 
4
  import google.generativeai as genai
5
  import json
6
  import os
7
+ import re
8
  import logging
9
  import func
10
  from datetime import datetime, timedelta
 
57
  "threshold": "BLOCK_NONE"
58
  },
59
  ]
 
60
  class APIKeyManager:
61
  def __init__(self):
62
+ self.api_keys = re.findall(r"AIzaSy[a-zA-Z0-9]{33}", os.environ.get('KeyArray'))
63
  self.current_index = 0
64
 
65
  def get_available_key(self):
 
74
  return current_key
75
 
76
  logger.error("所有API key都已耗尽或被暂时禁用,请重新配置或稍后重试")
77
+ return None
78
 
79
  def show_all_keys(self):
80
  logger.info(f"当前可用API key个数: {len(self.api_keys)} ")
 
117
 
118
  @app.route('/')
119
  def index():
120
+ main_content = "Moonfanz Reminiproxy v2.1.3 2025-01-09"
121
  html_template = """
122
  <!DOCTYPE html>
123
  <html>
 
192
  switch_api_key()
193
  return 0, None
194
 
195
+ elif isinstance(error, ResourceExhausted):
196
  delay = min(RETRY_DELAY * (2 ** attempt), MAX_RETRY_DELAY)
197
+ logger.warning(f"{current_api_key[:11]} → 429 官方资源耗尽 → {delay} 秒后重试...")
 
 
 
198
  key_manager.blacklist_key(current_api_key)
199
  switch_api_key()
200
  time.sleep(delay)
201
  return 0, None
202
 
203
+ elif isinstance(error, Aborted):
204
+ delay = min(RETRY_DELAY * (2 ** attempt), MAX_RETRY_DELAY)
205
+ logger.warning(f"{current_api_key[:11]} → 操作被中止 → {delay} 秒后重试...")
206
+ time.sleep(delay)
207
+ return 0, None
208
+
209
+ elif isinstance(error, InternalServerError):
210
+ delay = min(RETRY_DELAY * (2 ** attempt), MAX_RETRY_DELAY)
211
+ logger.warning(f"{current_api_key[:11]} → 500 服务器内部错误 → {delay} 秒后重试...")
212
+ time.sleep(delay)
213
+ return 0, None
214
+
215
+ elif isinstance(error, ServiceUnavailable):
216
+ delay = min(RETRY_DELAY * (2 ** attempt), MAX_RETRY_DELAY)
217
+ logger.warning(f"{current_api_key[:11]} → 503 服务不可用 → {delay} 秒后重试...")
218
+ time.sleep(delay)
219
+ return 0, None
220
+
221
  elif isinstance(error, PermissionDenied):
222
  logger.error(f"{current_api_key[:11]} → 403 权限被拒绝,该 API KEY 可能已经被官方封禁")
223
  key_manager.blacklist_key(current_api_key)