fix(viral_video): #2040 loader在api进程内DB热加载(懒建同步引擎) #2176

Merged
auto-approve-bot merged 1 commits from fix/2040-loader-engine into develop 2026-10-04 16:07:26 +08:00
@@ -50,12 +50,39 @@ def _fallback(prompt_type: str) -> Optional[PromptTemplate]:
return None
def _load_from_db(prompt_type: str) -> Optional[PromptTemplate]:
if _session_mod.SessionLocal is None:
_lazy_session = None
def _get_session():
"""优先用全局 SessionLocal(worker);否则按应用配置懒建同步引擎(api)。"""
global _lazy_session
if _session_mod.SessionLocal is not None:
return _session_mod.SessionLocal()
if _lazy_session is not None:
return _lazy_session()
try:
from packages.config import get_shared_settings
url = str(get_shared_settings().database_url)
except Exception: # noqa: BLE001
return None
if not url:
return None
url = url.replace("postgresql+asyncpg://", "postgresql+psycopg://")
url = url.replace("postgresql://", "postgresql+psycopg://") if url.startswith("postgresql://") else url
engine = sa.create_engine(url, pool_pre_ping=True, pool_size=2, max_overflow=2)
from sqlalchemy.orm import sessionmaker
_lazy_session = sessionmaker(bind=engine)
return _lazy_session()
def _load_from_db(prompt_type: str) -> Optional[PromptTemplate]:
session = None
try:
session = _session_mod.SessionLocal()
session = _get_session()
if session is None:
return None
sql = sa.text("""
SELECT name, prompt_type, version, system_prompt,
user_prompt_template, COALESCE(example_output, '') AS example_output,