fix(permission): 将权限管理器初始化改为异步
`PermissionManager` 的 `__init__` 方法中包含了同步的数据库初始化操作,这会在异步环境中阻塞事件循环。 本次提交将数据库连接的逻辑移至一个新的异步方法 `initialize()` 中,并在应用启动时显式调用和等待它。这确保了数据库的初始化过程是异步执行的,避免了潜在的性能问题。 BREAKING CHANGE: `PermissionManager` 实例化后需要手动调用并等待 `initialize()` 方法来完成数据库初始化。
This commit is contained in:
@@ -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("权限管理器初始化成功")
|
||||
|
||||
|
||||
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user