Skip to content

Commit ea6b3e0

Browse files
author
root
committed
Defer fail_fast exit until all retries are exhausted
1 parent fb610de commit ea6b3e0

File tree

2 files changed

+7
-67
lines changed

2 files changed

+7
-67
lines changed

scieval/api/base.py

Lines changed: 7 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -264,47 +264,31 @@ def generate(self, message, **kwargs1):
264264

265265
for i in range(self.retry):
266266
try:
267-
# 调用子类
268267
ret_code, answer, log = self.generate_inner(message, **kwargs)
269-
270-
# 如果代码走到了这里,说明没有抛出异常 (HTTP 200)
271-
# 但有可能 ret_code 依然是非 0 (取决于子类具体实现,通常是 0)
272268
if ret_code == 0 and self.fail_msg not in answer:
273269
return answer
274-
275-
# 如果 ret_code 非 0,也可以检查 log 里有没有绿灯关键词
276270
if self._check_green_light(str(log), current_ignore_patterns):
277271
return f"[Policy Violation Ignored] {log}"
278272

279273
except Exception as err:
280-
281-
error_content = str(err) # 默认错误信息
282-
283-
# 尝试从异常中提取 API 返回的详细 JSON (针对 HTTPError)
274+
error_content = str(err)
284275
if hasattr(err, 'response') and err.response is not None:
285276
try:
286-
# 比如 OpenAI 返回的 {"error": {"code": "content_policy_violation"...}}
287-
# 就藏在 err.response.text 里
288277
api_error_text = err.response.text
289278
error_content += f" | API Response: {api_error_text}"
290279
except:
291280
pass
292-
293-
# 1. 检查是否绿灯 (放行)
294281
if self._check_green_light(error_content, current_ignore_patterns):
295282
self.logger.warning(f"Error matched ignore pattern. Returning error as result.")
296283
return f"[Allowed Exceptions] {error_content}"
297284

298-
# 2. 检查 Fail Fast (报错退出)
299-
if fail_fast:
300-
self.logger.critical(f"[Fail-Fast] Exception occurred: {error_content}")
301-
import os
302-
os._exit(1)
303-
304-
# 3. 普通重试
305285
self.logger.error(f"Attempt {i + 1} failed: {err}")
306-
time.sleep(rd.random() * self.wait * 2)
307-
286+
if i < self.retry - 1:
287+
time.sleep(rd.random() * self.wait * 2)
288+
if fail_fast:
289+
self.logger.critical(f"[Fail-Fast] All {self.retry} attempts failed. Aborting.")
290+
import os
291+
os._exit(1)
308292
return self.fail_msg
309293

310294
def _check_green_light(self, text, patterns):

transfer_data2tsv.py

Lines changed: 0 additions & 44 deletions
This file was deleted.

0 commit comments

Comments
 (0)