dan92 commited on
Commit
8d10cbf
·
verified ·
1 Parent(s): 0e3e065

Upload app.py

Browse files
Files changed (1) hide show
  1. app.py +34 -33
app.py CHANGED
@@ -668,11 +668,10 @@ def make_request(payload, auth_manager, model_id):
668
  global multi_auth_manager
669
  max_retries = 3
670
  retry_delay = 1
671
- accounts_exhausted = False
672
 
673
  logger.info(f"尝试发送请求,模型:{model_id}")
674
 
675
- # 首先检查 multi_auth_manager 是否存在
676
  if not multi_auth_manager:
677
  logger.error("MultiAuthManager 不存在,尝试重新初始化")
678
  credentials = get_auth_credentials()
@@ -685,12 +684,32 @@ def make_request(payload, auth_manager, model_id):
685
  else:
686
  raise Exception("无法注册新账号")
687
 
688
- for _ in range(len(multi_auth_manager.auth_managers)): # 尝试所有可用的账号
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
689
  auth_manager = multi_auth_manager.get_next_auth_manager(model_id)
690
  if not auth_manager:
691
  logger.error(f"No available accounts for model {model_id}")
692
- accounts_exhausted = True
693
- break
 
 
694
 
695
  for attempt in range(max_retries):
696
  try:
@@ -710,14 +729,18 @@ def make_request(payload, auth_manager, model_id):
710
  headers_cache.clear()
711
 
712
  if response.status_code == 401: # Unauthorized
713
- logger.info(f"Token expired for account {auth_manager._email}, attempting refresh (attempt {attempt + 1})")
714
  if auth_manager.ensure_valid_token():
715
  continue
716
 
717
- if response.status_code == 403: # Forbidden, likely due to model usage limit
718
  logger.warning(f"Model {model_id} usage limit reached for account {auth_manager._email}")
719
- auth_manager.set_model_unavailable(model_id)
720
- break # Break the inner loop to try the next account
 
 
 
 
721
 
722
  logger.error(f"Request failed with status {response.status_code} for account {auth_manager._email}")
723
 
@@ -727,32 +750,10 @@ def make_request(payload, auth_manager, model_id):
727
  time.sleep(retry_delay)
728
  continue
729
 
730
- # If we've exhausted all retries for this account, continue to the next account
731
  continue
732
 
733
- # 如果所有账号都被耗尽,强制注册新账号
734
- if accounts_exhausted:
735
- logger.info("所有账号已耗尽,强制尝试注册新账号")
736
- try:
737
- # 直接调用注册方法
738
- successful_accounts = register_bot.register_and_verify(5) # 注册5个账号
739
-
740
- if successful_accounts:
741
- logger.info(f"成功注册 {len(successful_accounts)} 个新账号")
742
- # 重新初始化 multi_auth_manager
743
- credentials = [(account['email'], account['password']) for account in successful_accounts]
744
- multi_auth_manager = MultiAuthManager(credentials)
745
-
746
- # 重新尝试请求
747
- return make_request(payload, None, model_id)
748
- else:
749
- logger.error("无法自动注册新账号")
750
- raise Exception("Failed to register new accounts")
751
- except Exception as e:
752
- logger.error(f"自动注册过程发生错误: {e}")
753
- raise Exception("Failed to make request after trying all accounts and registration")
754
-
755
- raise Exception("Failed to make request after trying all accounts")
756
 
757
  def health_check():
758
  """定期检查认证状态和重置模型使用状态"""
 
668
  global multi_auth_manager
669
  max_retries = 3
670
  retry_delay = 1
 
671
 
672
  logger.info(f"尝试发送请求,模型:{model_id}")
673
 
674
+ # 确保 multi_auth_manager 存在
675
  if not multi_auth_manager:
676
  logger.error("MultiAuthManager 不存在,尝试重新初始化")
677
  credentials = get_auth_credentials()
 
684
  else:
685
  raise Exception("无法注册新账号")
686
 
687
+ def trigger_registration():
688
+ """内部函数,用于触发账号注册"""
689
+ logger.info("触发新账号注册流程")
690
+ try:
691
+ successful_accounts = register_bot.register_and_verify(5)
692
+ if successful_accounts:
693
+ logger.info(f"成功注册 {len(successful_accounts)} 个新账号")
694
+ credentials = [(account['email'], account['password']) for account in successful_accounts]
695
+ global multi_auth_manager
696
+ multi_auth_manager = MultiAuthManager(credentials)
697
+ return True
698
+ else:
699
+ logger.error("无法自动注册新账号")
700
+ return False
701
+ except Exception as e:
702
+ logger.error(f"注册过程发生错误: {e}")
703
+ return False
704
+
705
+ for _ in range(len(multi_auth_manager.auth_managers)):
706
  auth_manager = multi_auth_manager.get_next_auth_manager(model_id)
707
  if not auth_manager:
708
  logger.error(f"No available accounts for model {model_id}")
709
+ # 立即触发注册
710
+ if not trigger_registration():
711
+ raise Exception("无法注册新账号")
712
+ continue
713
 
714
  for attempt in range(max_retries):
715
  try:
 
729
  headers_cache.clear()
730
 
731
  if response.status_code == 401: # Unauthorized
732
+ logger.info(f"Token expired for account {auth_manager._email}, attempting refresh")
733
  if auth_manager.ensure_valid_token():
734
  continue
735
 
736
+ if response.status_code == 403: # Forbidden, 模型使用限制
737
  logger.warning(f"Model {model_id} usage limit reached for account {auth_manager._email}")
738
+ # 立即触发注册
739
+ if trigger_registration():
740
+ # 重试请求
741
+ return make_request(payload, None, model_id)
742
+ else:
743
+ raise Exception("注册新账号失败")
744
 
745
  logger.error(f"Request failed with status {response.status_code} for account {auth_manager._email}")
746
 
 
750
  time.sleep(retry_delay)
751
  continue
752
 
753
+ # 如果当前账号重试失败,尝试下一个账号
754
  continue
755
 
756
+ raise Exception("所有账号和注册尝试均失败")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
757
 
758
  def health_check():
759
  """定期检查认证状态和重置模型使用状态"""