bugfix:更换数据库初始化超时路径以修复连接超时问题 (#2137)

* bugfix:更换数据库初始化超时路径以修复连接超时问题

* 移除部分观测链路

* 细节修改

* 权限检查细节修改2

* bugfix:修复金币懒加载造成插件金币消耗不了的问题

* bugfix:整理鉴权逻辑

* 完善缓存系统

* 优化官端使用

* bugfix:增加官机和频道的前导统一剥离,新增获取群列表自愈

* bugfix:修复导入问题
This commit is contained in:
Copaan
2026-06-07 18:14:01 +08:00
committed by GitHub
parent 381d497c6d
commit 8afc8f8673
56 changed files with 1899 additions and 1654 deletions
+3
View File
@@ -5,6 +5,9 @@ from pydantic import BaseModel
# 数据库操作超时设置(秒)
DB_TIMEOUT_SECONDS = 3.0
# 启动期自动补齐字段/索引可能需要等待数据库锁或扫描较大的表,单独放宽超时
DB_SCHEMA_GUARD_TIMEOUT_SECONDS = 30.0
# 性能监控阈值(秒)
SLOW_QUERY_THRESHOLD = 0.5
+13 -3
View File
@@ -13,7 +13,7 @@ from tortoise.exceptions import OperationalError
from zhenxun.services.log import logger
from .config import DB_TIMEOUT_SECONDS, LOG_COMMAND
from .config import DB_SCHEMA_GUARD_TIMEOUT_SECONDS, LOG_COMMAND
Dialect = Literal["sqlite", "postgres", "mysql", "unknown"]
@@ -466,7 +466,7 @@ async def repair_safe_schema_drift() -> SchemaGuardResult:
try:
await asyncio.wait_for(
connection.execute_query_dict(sql),
timeout=DB_TIMEOUT_SECONDS,
timeout=DB_SCHEMA_GUARD_TIMEOUT_SECONDS,
)
columns[source] = ColumnInfo(name=source, data_type="")
result.repaired_columns += 1
@@ -521,7 +521,7 @@ async def repair_safe_schema_drift() -> SchemaGuardResult:
try:
await asyncio.wait_for(
connection.execute_query_dict(sql),
timeout=DB_TIMEOUT_SECONDS,
timeout=DB_SCHEMA_GUARD_TIMEOUT_SECONDS,
)
existing_indexes.add(index_columns)
result.repaired_indexes += 1
@@ -529,6 +529,16 @@ async def repair_safe_schema_drift() -> SchemaGuardResult:
f"SchemaGuard 已补齐索引: {table}.{index_columns}",
LOG_COMMAND,
)
except TimeoutError as exc:
result.warnings += 1
result.skipped_indexes += 1
logger.warning(
"SchemaGuard 补齐索引超时,已跳过: "
f"{table}.{index_columns} "
f"({DB_SCHEMA_GUARD_TIMEOUT_SECONDS}s)",
LOG_COMMAND,
e=exc,
)
except OperationalError as exc:
err = str(exc).lower()
if any(