""" pccs — 算力中心集群系统 (Pooled Computing Cluster System) 入口: webapp(init) 模式 """ import os, sys from ahserver.webapp import webapp # ═══ 模块级 Monkey Patches (必须在任何 rbac/sqlor 使用前执行) ═══ # 1. DictObject.__getattr__ — 所有 ServerEnv 实例默认 get_module_dbname from appPublic.dictObject import DictObject _orig_getattr = DictObject.__getattr__ def _patched_getattr(self, key): if key == 'get_module_dbname': return lambda m: 'pccs' if key == 'password_encode': return lambda s: s return _orig_getattr(self, key) DictObject.__getattr__ = _patched_getattr # 2. get_sor_context — 复用全局 DBPools 而非创建空实例 import os as _os from appPublic.jsonConfig import getConfig as _getConfig import sqlor.dbpools as _dbp from sqlor.dbpools import DBPools _workdir = _os.path.dirname(_os.path.dirname(_os.path.abspath(__file__))) _config = _getConfig(_workdir, NS={'workdir': _workdir}) _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 print('[pccs] patched get_sor_context', flush=True) def init(): from appbase.init import load_appbase from rbac.init import load_rbac load_appbase() load_rbac() if __name__ == '__main__': webapp(init)