fix(permission): 将权限管理器初始化改为异步

`PermissionManager` 的 `__init__` 方法中包含了同步的数据库初始化操作,这会在异步环境中阻塞事件循环。

本次提交将数据库连接的逻辑移至一个新的异步方法 `initialize()` 中,并在应用启动时显式调用和等待它。这确保了数据库的初始化过程是异步执行的,避免了潜在的性能问题。

BREAKING CHANGE: `PermissionManager` 实例化后需要手动调用并等待 `initialize()` 方法来完成数据库初始化。
This commit is contained in:
minecraft1024a
2025-09-23 14:08:54 +08:00
parent 1f2956e725
commit b6792149f9
2 changed files with 8 additions and 2 deletions

View File

@@ -223,6 +223,7 @@ MoFox_Bot(第三方修改版)
from src.plugin_system.apis.permission_api import permission_api
permission_manager = PermissionManager()
await permission_manager.initialize()
permission_api.set_permission_manager(permission_manager)
logger.info("权限管理器初始化成功")

View File

@@ -22,10 +22,15 @@ class PermissionManager(IPermissionManager):
"""权限管理器实现类"""
def __init__(self):
self.engine = get_engine()
self.SessionLocal = async_sessionmaker(bind=self.engine)
self.engine = None
self.SessionLocal = None
self._master_users: Set[Tuple[str, str]] = set()
self._load_master_users()
async def initialize(self):
"""异步初始化数据库连接"""
self.engine = await get_engine()
self.SessionLocal = async_sessionmaker(bind=self.engine)
logger.info("权限管理器初始化完成")
def _load_master_users(self):