动态调整请求异常上限
This commit is contained in:
@@ -15,7 +15,7 @@ from docutranslate.logger import global_logger
|
|||||||
from docutranslate.utils.utils import get_httpx_proxies
|
from docutranslate.utils.utils import get_httpx_proxies
|
||||||
|
|
||||||
MAX_RETRY_COUNT = 2
|
MAX_RETRY_COUNT = 2
|
||||||
MAX_TOTAL_ERROR_COUNT = 10
|
MAX_REQUESTS_PER_ERROR = 30
|
||||||
|
|
||||||
ThinkingMode = Literal["enable", "disable", "default"]
|
ThinkingMode = Literal["enable", "disable", "default"]
|
||||||
|
|
||||||
@@ -34,21 +34,22 @@ class AgentConfig:
|
|||||||
|
|
||||||
|
|
||||||
class TotalErrorCounter:
|
class TotalErrorCounter:
|
||||||
def __init__(self, logger: logging.Logger):
|
def __init__(self, logger: logging.Logger,max_errors_count=10):
|
||||||
self.lock = Lock()
|
self.lock = Lock()
|
||||||
self.count = 0
|
self.count = 0
|
||||||
self.logger = logger
|
self.logger = logger
|
||||||
|
self.max_errors_count=max_errors_count
|
||||||
|
|
||||||
def add(self):
|
def add(self):
|
||||||
self.lock.acquire()
|
self.lock.acquire()
|
||||||
self.count += 1
|
self.count += 1
|
||||||
if self.count > MAX_TOTAL_ERROR_COUNT:
|
if self.count > self.max_errors_count:
|
||||||
self.logger.info(f"错误响应过多")
|
self.logger.info(f"错误响应过多")
|
||||||
self.lock.release()
|
self.lock.release()
|
||||||
return self.reach_limit()
|
return self.reach_limit()
|
||||||
|
|
||||||
def reach_limit(self):
|
def reach_limit(self):
|
||||||
return self.count > MAX_TOTAL_ERROR_COUNT
|
return self.count > self.max_errors_count
|
||||||
|
|
||||||
|
|
||||||
# 仅使用多线程时用以计数
|
# 仅使用多线程时用以计数
|
||||||
@@ -178,6 +179,7 @@ class Agent:
|
|||||||
total = len(prompts)
|
total = len(prompts)
|
||||||
self.logger.info(f"base-url:{self.baseurl},model-id:{self.model_id}")
|
self.logger.info(f"base-url:{self.baseurl},model-id:{self.model_id}")
|
||||||
self.logger.info(f"预计发送{total}个请求,并发请求数:{max_concurrent}")
|
self.logger.info(f"预计发送{total}个请求,并发请求数:{max_concurrent}")
|
||||||
|
self.total_error_counter.max_errors_count=len(prompts) // MAX_REQUESTS_PER_ERROR #允许多少个异常
|
||||||
count = 0
|
count = 0
|
||||||
semaphore = asyncio.Semaphore(max_concurrent)
|
semaphore = asyncio.Semaphore(max_concurrent)
|
||||||
tasks = []
|
tasks = []
|
||||||
@@ -262,7 +264,7 @@ class Agent:
|
|||||||
) -> list[Any]:
|
) -> list[Any]:
|
||||||
self.logger.info(f"base-url:{self.baseurl},model-id:{self.model_id}")
|
self.logger.info(f"base-url:{self.baseurl},model-id:{self.model_id}")
|
||||||
self.logger.info(f"预计发送{len(prompts)}个请求,并发请求数:{self.max_concurrent}")
|
self.logger.info(f"预计发送{len(prompts)}个请求,并发请求数:{self.max_concurrent}")
|
||||||
|
self.total_error_counter.max_errors_count = len(prompts) // MAX_REQUESTS_PER_ERROR # 允许多少个异常
|
||||||
# 创建单个计数器实例
|
# 创建单个计数器实例
|
||||||
counter = PromptsCounter(len(prompts), self.logger)
|
counter = PromptsCounter(len(prompts), self.logger)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user