yangtb24 commited on
Commit
7332a9f
·
verified ·
1 Parent(s): a8ece5f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +6 -49
app.py CHANGED
@@ -39,7 +39,7 @@ free_keys_global = []
39
  unverified_keys_global = []
40
  valid_keys_global = []
41
 
42
- executor = concurrent.futures.ThreadPoolExecutor(max_workers=1000)
43
  model_key_indices = {}
44
 
45
  request_timestamps = []
@@ -47,9 +47,6 @@ token_counts = []
47
  data_lock = threading.Lock()
48
 
49
  def get_credit_summary(api_key):
50
- """
51
- 使用 API 密钥获取额度信息。
52
- """
53
  headers = {
54
  "Authorization": f"Bearer {api_key}",
55
  "Content-Type": "application/json"
@@ -77,9 +74,6 @@ FREE_IMAGE_LIST = [
77
  ]
78
 
79
  def test_model_availability(api_key, model_name):
80
- """
81
- 测试指定的模型是否可用。
82
- """
83
  headers = {
84
  "Authorization": f"Bearer {api_key}",
85
  "Content-Type": "application/json"
@@ -108,9 +102,6 @@ def test_model_availability(api_key, model_name):
108
  return False
109
 
110
  def refresh_models():
111
- """
112
- 刷新模型列表和免费模型列表。
113
- """
114
  global text_models, free_text_models
115
  global embedding_models, free_embedding_models
116
  global image_models, free_image_models
@@ -143,7 +134,7 @@ def refresh_models():
143
  image_models = [model for model in image_models if model not in ban_models]
144
 
145
  with concurrent.futures.ThreadPoolExecutor(
146
- max_workers=1000
147
  ) as executor:
148
  future_to_model = {
149
  executor.submit(
@@ -162,7 +153,7 @@ def refresh_models():
162
  logging.error(f"模型 {model} 测试生成异常: {exc}")
163
 
164
  with concurrent.futures.ThreadPoolExecutor(
165
- max_workers=1000
166
  ) as executor:
167
  future_to_model = {
168
  executor.submit(
@@ -180,7 +171,7 @@ def refresh_models():
180
  logging.error(f"模型 {model} 测试生成异常: {exc}")
181
 
182
  with concurrent.futures.ThreadPoolExecutor(
183
- max_workers=1000
184
  ) as executor:
185
  future_to_model = {
186
  executor.submit(
@@ -205,9 +196,6 @@ def refresh_models():
205
  logging.info(f"免费生图模型列表:{free_image_models}")
206
 
207
  def test_embedding_model_availability(api_key, model_name):
208
- """
209
- 测试指定的向量模型是否可用。
210
- """
211
  headers = {
212
  "Authorization": f"Bearer {api_key}",
213
  "Content-Type": "application/json"
@@ -234,19 +222,9 @@ def test_embedding_model_availability(api_key, model_name):
234
  return False
235
 
236
  def test_image_model_availability(api_key, model_name):
237
- """
238
- 测试指定的图像模型是否在 FREE_IMAGE_LIST 中。
239
- 如果在列表中,返回 True,否则返回 False。
240
- """
241
  return model_name in FREE_IMAGE_LIST
242
 
243
  def load_keys():
244
- """
245
- 从环境变量中加载 keys,进行去重,
246
- 并根据额度和模型可用性进行分类,
247
- 然后记录到日志中。
248
- 使用线程池并发处理每个 key。
249
- """
250
  keys_str = os.environ.get("KEYS")
251
  test_model = os.environ.get(
252
  "TEST_MODEL",
@@ -262,7 +240,7 @@ def load_keys():
262
  logging.info(f"加载的 keys:{unique_keys}")
263
 
264
  with concurrent.futures.ThreadPoolExecutor(
265
- max_workers=1000
266
  ) as executor:
267
  future_to_key = {
268
  executor.submit(
@@ -308,9 +286,6 @@ def load_keys():
308
  logging.warning("环境变量 KEYS 未设置。")
309
 
310
  def process_key(key, test_model):
311
- """
312
- 处理单个 key,判断其类型。
313
- """
314
  credit_summary = get_credit_summary(key)
315
  if credit_summary is None:
316
  return "invalid"
@@ -325,9 +300,6 @@ def process_key(key, test_model):
325
  return "unverified"
326
 
327
  def get_all_models(api_key, sub_type):
328
- """
329
- 获取所有模型列表。
330
- """
331
  headers = {
332
  "Authorization": f"Bearer {api_key}",
333
  "Content-Type": "application/json"
@@ -366,9 +338,6 @@ def get_all_models(api_key, sub_type):
366
  return []
367
 
368
  def determine_request_type(model_name, model_list, free_model_list):
369
- """
370
- 根据用户请求的模型判断请求类型。
371
- """
372
  if model_name in free_model_list:
373
  return "free"
374
  elif model_name in model_list:
@@ -377,10 +346,6 @@ def determine_request_type(model_name, model_list, free_model_list):
377
  return "unknown"
378
 
379
  def select_key(request_type, model_name):
380
- """
381
- 根据请求类型和模型名称选择合适的 KEY,
382
- 并实现轮询和重试机制。
383
- """
384
  if request_type == "free":
385
  available_keys = (
386
  free_keys_global +
@@ -417,10 +382,6 @@ def select_key(request_type, model_name):
417
  return None
418
 
419
  def key_is_valid(key, request_type):
420
- """
421
- 检查 KEY 是否有效,
422
- 根据不同的请求类型进行不同的检查。
423
- """
424
  if request_type == "invalid":
425
  return False
426
 
@@ -438,10 +399,6 @@ def key_is_valid(key, request_type):
438
  return False
439
 
440
  def check_authorization(request):
441
- """
442
- 检查请求头中的 Authorization 字段
443
- 是否匹配环境变量 AUTHORIZATION_KEY。
444
- """
445
  authorization_key = os.environ.get("AUTHORIZATION_KEY")
446
  if not authorization_key:
447
  logging.warning("环境变量 AUTHORIZATION_KEY 未设置,请设置后重试。")
@@ -487,7 +444,7 @@ def check_tokens():
487
  )
488
 
489
  with concurrent.futures.ThreadPoolExecutor(
490
- max_workers=1000
491
  ) as executor:
492
  future_to_token = {
493
  executor.submit(
 
39
  unverified_keys_global = []
40
  valid_keys_global = []
41
 
42
+ executor = concurrent.futures.ThreadPoolExecutor(max_workers=10000)
43
  model_key_indices = {}
44
 
45
  request_timestamps = []
 
47
  data_lock = threading.Lock()
48
 
49
  def get_credit_summary(api_key):
 
 
 
50
  headers = {
51
  "Authorization": f"Bearer {api_key}",
52
  "Content-Type": "application/json"
 
74
  ]
75
 
76
  def test_model_availability(api_key, model_name):
 
 
 
77
  headers = {
78
  "Authorization": f"Bearer {api_key}",
79
  "Content-Type": "application/json"
 
102
  return False
103
 
104
  def refresh_models():
 
 
 
105
  global text_models, free_text_models
106
  global embedding_models, free_embedding_models
107
  global image_models, free_image_models
 
134
  image_models = [model for model in image_models if model not in ban_models]
135
 
136
  with concurrent.futures.ThreadPoolExecutor(
137
+ max_workers=10000
138
  ) as executor:
139
  future_to_model = {
140
  executor.submit(
 
153
  logging.error(f"模型 {model} 测试生成异常: {exc}")
154
 
155
  with concurrent.futures.ThreadPoolExecutor(
156
+ max_workers=10000
157
  ) as executor:
158
  future_to_model = {
159
  executor.submit(
 
171
  logging.error(f"模型 {model} 测试生成异常: {exc}")
172
 
173
  with concurrent.futures.ThreadPoolExecutor(
174
+ max_workers=10000
175
  ) as executor:
176
  future_to_model = {
177
  executor.submit(
 
196
  logging.info(f"免费生图模型列表:{free_image_models}")
197
 
198
  def test_embedding_model_availability(api_key, model_name):
 
 
 
199
  headers = {
200
  "Authorization": f"Bearer {api_key}",
201
  "Content-Type": "application/json"
 
222
  return False
223
 
224
  def test_image_model_availability(api_key, model_name):
 
 
 
 
225
  return model_name in FREE_IMAGE_LIST
226
 
227
  def load_keys():
 
 
 
 
 
 
228
  keys_str = os.environ.get("KEYS")
229
  test_model = os.environ.get(
230
  "TEST_MODEL",
 
240
  logging.info(f"加载的 keys:{unique_keys}")
241
 
242
  with concurrent.futures.ThreadPoolExecutor(
243
+ max_workers=10000
244
  ) as executor:
245
  future_to_key = {
246
  executor.submit(
 
286
  logging.warning("环境变量 KEYS 未设置。")
287
 
288
  def process_key(key, test_model):
 
 
 
289
  credit_summary = get_credit_summary(key)
290
  if credit_summary is None:
291
  return "invalid"
 
300
  return "unverified"
301
 
302
  def get_all_models(api_key, sub_type):
 
 
 
303
  headers = {
304
  "Authorization": f"Bearer {api_key}",
305
  "Content-Type": "application/json"
 
338
  return []
339
 
340
  def determine_request_type(model_name, model_list, free_model_list):
 
 
 
341
  if model_name in free_model_list:
342
  return "free"
343
  elif model_name in model_list:
 
346
  return "unknown"
347
 
348
  def select_key(request_type, model_name):
 
 
 
 
349
  if request_type == "free":
350
  available_keys = (
351
  free_keys_global +
 
382
  return None
383
 
384
  def key_is_valid(key, request_type):
 
 
 
 
385
  if request_type == "invalid":
386
  return False
387
 
 
399
  return False
400
 
401
  def check_authorization(request):
 
 
 
 
402
  authorization_key = os.environ.get("AUTHORIZATION_KEY")
403
  if not authorization_key:
404
  logging.warning("环境变量 AUTHORIZATION_KEY 未设置,请设置后重试。")
 
444
  )
445
 
446
  with concurrent.futures.ThreadPoolExecutor(
447
+ max_workers=10000
448
  ) as executor:
449
  future_to_token = {
450
  executor.submit(