fix: monkey-patch get_sor_context to reuse global DBPools

This commit is contained in:
yumoqing 2026-08-11 16:56:21 +08:00
parent b51eb9f626
commit dd028e2203

View File

@ -22,11 +22,22 @@ def init():
DictObject.__getattr__ = _patched
# 验证 monkey-patch 生效
from ahserver.serverenv import ServerEnv
e = ServerEnv()
dbname = e.get_module_dbname('rbac')
print(f'[pccs] get_module_dbname(rbac) = {dbname}', flush=True)
# Monkey-patch get_sor_context — 复用已初始化的 DBPools 而非创建空实例
from appPublic.jsonConfig import getConfig
import sqlor.dbpools as _dbp
from sqlor.dbpools import DBPools
config = getConfig()
_global_db = DBPools(config.databases)
_orig_sor_ctx = _dbp.get_sor_context
async def _patched_sor_ctx(env, modulename, errorback=None):
dbname = env.get_module_dbname(modulename)
async with _global_db.sqlorContext(dbname) as sor:
yield sor
_dbp.get_sor_context = _patched_sor_ctx
from appbase.init import load_appbase
from rbac.init import load_rbac