v2.8.0 清空历史真正物理删除 + 请求超时可配修复慢接口被掐断

1. 清空历史=真正清空(不再只是删行留痕):
   - 清空前先停止所有运行中测试线程,避免其继续写入孤儿数据
   - DELETE 后重置自增序列(sqlite_sequence),新测试 ID 从 1 开始
   - WAL checkpoint(TRUNCATE) + VACUUM 物理回收文件空间,数据不可恢复
   - 单条删除删光时同样重置自增序列

2. 慢接口被掐断修复(预处理/首字耗时过长 Read timed out):
   - 读取超时默认 300s→1800s(30分钟),连接 60s
   - 「速度测试配置」新增 请求超时(秒) 输入框(默认1800),测试连接+速度采样共用,按次可调(如3600)
   - 超时错误改为友好提示:等待响应超时(超过N秒未收到数据),引导调大请求超时,不再裸抛 Read timed out
   - 测试启动日志打印当前超时配置
   - 修复案例: 18008 Qwen3.8-FP8 131072 长上下文预填充被 300s 掐断
This commit is contained in:
2026-09-13 12:38:40 +08:00
parent 31e5bbb873
commit ccfd7eb689
7 changed files with 94 additions and 12 deletions
+12 -1
View File
@@ -277,14 +277,21 @@ def query_tests(q="", status="", provider="", sort="id", order="desc",
def clear_tests():
"""一键清空全部历史(测试记录 + 采样指标 + 日志)"""
"""一键清空全部历史(测试记录 + 采样指标 + 日志)
真正清空:删除全部行 + 重置自增序列 + WAL 检查点 + VACUUM 物理回收文件空间,
数据不可恢复(不是只从列表里移除,文件里也不再残留)。"""
with _lock:
conn = _connect()
try:
conn.execute("DELETE FROM test_runs")
conn.execute("DELETE FROM logs")
conn.execute("DELETE FROM tests")
# 重置自增序列:清空后新测试 ID 从 1 重新开始
conn.execute("DELETE FROM sqlite_sequence WHERE name IN ('tests','test_runs','logs')")
conn.commit()
# WAL 检查点截断 + VACUUM:把文件里已删除的数据页物理抹掉、文件瘦身
conn.execute("PRAGMA wal_checkpoint(TRUNCATE)")
conn.execute("VACUUM")
finally:
conn.close()
@@ -296,6 +303,10 @@ def delete_test(tid: int):
conn.execute("DELETE FROM tests WHERE id=?", (tid,))
conn.execute("DELETE FROM test_runs WHERE test_id=?", (tid,))
conn.execute("DELETE FROM logs WHERE test_id=?", (tid,))
# 全部删光时顺带重置自增序列
n = conn.execute("SELECT COUNT(*) FROM tests").fetchone()[0]
if n == 0:
conn.execute("DELETE FROM sqlite_sequence WHERE name IN ('tests','test_runs','logs')")
conn.commit()
finally:
conn.close()