mirror of
https://github.com/zhenxun-org/zhenxun_bot.git
synced 2025-12-14 21:52:56 +08:00
Some checks failed
检查bot是否运行正常 / bot check (push) Has been cancelled
CodeQL Code Security Analysis / Analyze (${{ matrix.language }}) (none, javascript-typescript) (push) Has been cancelled
CodeQL Code Security Analysis / Analyze (${{ matrix.language }}) (none, python) (push) Has been cancelled
Sequential Lint and Type Check / ruff-call (push) Has been cancelled
Release Drafter / Update Release Draft (push) Has been cancelled
Force Sync to Aliyun / sync (push) Has been cancelled
Update Version / update-version (push) Has been cancelled
Sequential Lint and Type Check / pyright-call (push) Has been cancelled
* 🐛 修复数据库超时问题 * 🔧 移除帮助图片清理功能. * ✨ 更新插件商店功能,允许在添加插件时指定源类型为 None。优化插件 ID 查找逻辑,增强代码可读性。新增 zhenxun/ui 模块导入。 * 🔧 优化数据访问和数据库上下文逻辑,移除不必要的全局变量和日志信息,调整日志级别为调试,提升代码可读性和性能。
32 lines
907 B
Python
32 lines
907 B
Python
import asyncio
|
|
import time
|
|
|
|
from zhenxun.services.log import logger
|
|
|
|
from .config import (
|
|
DB_TIMEOUT_SECONDS,
|
|
LOG_COMMAND,
|
|
SLOW_QUERY_THRESHOLD,
|
|
)
|
|
|
|
|
|
async def with_db_timeout(
|
|
coro,
|
|
timeout: float = DB_TIMEOUT_SECONDS,
|
|
operation: str | None = None,
|
|
source: str | None = None,
|
|
):
|
|
"""带超时控制的数据库操作"""
|
|
start_time = time.time()
|
|
try:
|
|
logger.debug(f"开始执行数据库操作: {operation} 来源: {source}")
|
|
result = await asyncio.wait_for(coro, timeout=timeout)
|
|
elapsed = time.time() - start_time
|
|
if elapsed > SLOW_QUERY_THRESHOLD and operation:
|
|
logger.warning(f"慢查询: {operation} 耗时 {elapsed:.3f}s", LOG_COMMAND)
|
|
return result
|
|
except asyncio.TimeoutError:
|
|
if operation:
|
|
logger.error(f"数据库操作超时: {operation} (>{timeout}s)", LOG_COMMAND)
|
|
raise
|