✨feat(core): 优化数据库调用表现 (#2089)

This commit is contained in:
ManyManyTomato
2026-02-01 14:28:51 +08:00
committed by GitHub
parent 7890b39002
commit 203754e300
10 changed files with 341 additions and 44 deletions
@@ -4,6 +4,7 @@ from zhenxun.models.group_console import GroupConsole
from zhenxun.models.plugin_info import PluginInfo
from zhenxun.models.task_info import TaskInfo
from zhenxun.services.cache import CacheRoot
from zhenxun.services.cache.runtime_cache import TaskInfoMemoryCache
from zhenxun.utils.common_utils import CommonUtils
from zhenxun.utils.enum import BlockType, CacheType, PluginType
from zhenxun.utils.exception import GroupInfoNotFound
@@ -338,9 +339,11 @@ class PluginManager:
"""
if is_default:
await TaskInfo.all().update(default_status=False)
await TaskInfoMemoryCache.refresh()
return "已禁用所有被动进群默认状态"
else:
await TaskInfo.all().update(status=False)
await TaskInfoMemoryCache.refresh()
return "已全局禁用所有被动状态"
@classmethod
@@ -355,9 +358,11 @@ class PluginManager:
"""
if is_default:
await TaskInfo.filter(name=name).update(default_status=False)
await TaskInfoMemoryCache.refresh()
return f"已禁用被动进群默认状态 {name}"
else:
await TaskInfo.filter(name=name).update(status=False)
await TaskInfoMemoryCache.refresh()
return f"已全局禁用被动状态 {name}"
@classmethod
@@ -372,9 +377,11 @@ class PluginManager:
"""
if is_default:
await TaskInfo.all().update(default_status=True)
await TaskInfoMemoryCache.refresh()
return "已开启所有被动进群默认状态"
else:
await TaskInfo.all().update(status=True)
await TaskInfoMemoryCache.refresh()
return "已全局开启所有被动状态"
@classmethod
@@ -390,9 +397,11 @@ class PluginManager:
"""
if is_default:
await TaskInfo.filter(name=name).update(default_status=True)
await TaskInfoMemoryCache.refresh()
return f"已开启被动进群默认状态 {name}"
else:
await TaskInfo.filter(name=name).update(status=True)
await TaskInfoMemoryCache.refresh()
return f"已全局开启被动状态 {name}"
@classmethod
@@ -14,6 +14,7 @@ from zhenxun.models.group_console import GroupConsole
from zhenxun.models.plugin_info import PluginInfo
from zhenxun.models.plugin_limit import PluginLimit
from zhenxun.models.task_info import TaskInfo
from zhenxun.services.cache.runtime_cache import TaskInfoMemoryCache
from zhenxun.services.log import logger
from zhenxun.utils.enum import (
BlockType,
@@ -379,6 +380,7 @@ async def group_migration():
if close_task := data["close_task"]:
"""全局被动关闭"""
await TaskInfo.filter(module__in=close_task).update(status=False)
await TaskInfoMemoryCache.refresh()
group_list = await GroupConsole.filter(
group_id__in=old_group_list.keys()
)
@@ -8,6 +8,7 @@ from nonebot_plugin_apscheduler import scheduler
from zhenxun.configs.utils import PluginExtraData, Task
from zhenxun.models.group_console import GroupConsole
from zhenxun.models.task_info import TaskInfo
from zhenxun.services.cache.runtime_cache import TaskInfoMemoryCache
from zhenxun.services.log import logger
from zhenxun.utils.common_utils import CommonUtils
from zhenxun.utils.manager.priority_manager import PriorityLifecycle
@@ -89,6 +90,8 @@ async def to_db(
if load_task:
await TaskInfo.filter(module__in=load_task).update(load_status=True)
await TaskInfo.filter(module__not_in=load_task).update(load_status=False)
if create_list or update_list or load_task:
await TaskInfoMemoryCache.refresh()
async def get_run_task(task: Task, *args, **kwargs):
@@ -144,6 +147,7 @@ async def _():
await _handle_setting(plugin, task_info_list, task_list)
if not task_info_list:
await TaskInfo.all().update(load_status=False)
await TaskInfoMemoryCache.refresh()
return
module_dict = {t[1]: t[0] for t in await TaskInfo.all().values_list("id", "module")}
load_task = []
@@ -11,6 +11,7 @@ from nonebot_plugin_session import EventSession
from zhenxun.configs.utils import PluginExtraData
from zhenxun.models.plugin_info import PluginInfo
from zhenxun.models.statistics import Statistics
from zhenxun.services.cache.runtime_cache import PluginInfoMemoryCache
from zhenxun.services.log import logger
from zhenxun.services.message_load import should_pause_tasks
from zhenxun.utils.enum import PluginType
@@ -39,7 +40,11 @@ async def _(
"""过滤除poke外的notice"""
return
if session.id1 and matcher.plugin:
plugin = await PluginInfo.get_plugin(module_path=matcher.plugin.module_name)
plugin = PluginInfoMemoryCache.get_by_module_path(matcher.plugin.module_name)
if not plugin:
plugin = await PluginInfo.get_plugin(module_path=matcher.plugin.module_name)
if plugin:
PluginInfoMemoryCache.set_plugin(plugin)
plugin_type = plugin.plugin_type if plugin else None
if plugin_type == PluginType.NORMAL:
logger.debug(f"提交调用记录: {matcher.plugin_name}...", session=session)