mirror of
https://github.com/zhenxun-org/zhenxun_bot.git
synced 2026-10-06 20:29:59 +08:00
bugfix:更换数据库初始化超时路径以修复连接超时问题 (#2137)
* bugfix:更换数据库初始化超时路径以修复连接超时问题 * 移除部分观测链路 * 细节修改 * 权限检查细节修改2 * bugfix:修复金币懒加载造成插件金币消耗不了的问题 * bugfix:整理鉴权逻辑 * 完善缓存系统 * 优化官端使用 * bugfix:增加官机和频道的前导统一剥离,新增获取群列表自愈 * bugfix:修复导入问题
This commit is contained in:
@@ -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,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(
|
||||
|
||||
Reference in New Issue
Block a user