fix(inference): 模板渲染兜底修正——原生jinja2.Environment无renders方法(独立脚本环境崩溃);诊断改print(模块logger未接应用日志管道)
This commit is contained in:
parent
26d083bdd2
commit
31a5c73225
@ -192,14 +192,18 @@ async def _render_tmpl(tmplstr, ns):
|
|||||||
te = getattr(ServerEnv(), 'tmpl_engine', None)
|
te = getattr(ServerEnv(), 'tmpl_engine', None)
|
||||||
except Exception:
|
except Exception:
|
||||||
te = None
|
te = None
|
||||||
if te is None or not callable(getattr(te, 'renders', None)):
|
if te is not None and callable(getattr(te, 'renders', None)):
|
||||||
try:
|
_tmpl_engine_cache = te
|
||||||
from jinja2 import Environment
|
return await te.renders(tmplstr, ns)
|
||||||
te = Environment(enable_async=True)
|
# 兜底:原生 jinja2.Environment 没有 renders 方法,用 from_string+render_async
|
||||||
except Exception:
|
try:
|
||||||
raise GovernError('模板引擎不可用:jinja2 未安装或未初始化,无法组包上游请求')
|
from jinja2 import Environment
|
||||||
_tmpl_engine_cache = te
|
env = Environment(enable_async=True)
|
||||||
return await te.renders(tmplstr, ns)
|
_tmpl_engine_cache = None # 原生引擎不缓存(避免掩盖后续真正的引擎注入)
|
||||||
|
t = env.from_string(tmplstr)
|
||||||
|
return await t.render_async(ns)
|
||||||
|
except Exception as e:
|
||||||
|
raise GovernError('模板渲染失败(组包不可用):%s' % str(e)[:200])
|
||||||
|
|
||||||
|
|
||||||
async def _render_headers(tmpl, ns):
|
async def _render_headers(tmpl, ns):
|
||||||
@ -274,10 +278,11 @@ async def _call_upstream_chat(ctx, payload):
|
|||||||
headers = await _render_headers(profile.get('headers', ''), ns)
|
headers = await _render_headers(profile.get('headers', ''), ns)
|
||||||
body = await _build_upstream_body(ctx, payload)
|
body = await _build_upstream_body(ctx, payload)
|
||||||
timeout = int(_fnum(ctx.get('timeout')) or _TOTAL_TIMEOUT)
|
timeout = int(_fnum(ctx.get('timeout')) or _TOTAL_TIMEOUT)
|
||||||
# 可诊断性:只记长度不记值(真 key 不落日志)
|
# 可诊断性:只记长度不记值(真 key 不落日志)。print 确保进应用日志
|
||||||
logger.info("inference: 组包 url=%s auth头长度=%d body字段=%s",
|
# (模块 logging.getLogger 的 handler 未接应用日志管道,2026-09-04 实测)
|
||||||
url.split('?')[0], len(headers.get('Authorization', '') or ''),
|
print("[inference] 组包 url=%s auth头长度=%d body字段=%s" % (
|
||||||
sorted(body.keys()))
|
url.split('?')[0], len(headers.get('Authorization', '') or ''),
|
||||||
|
sorted(body.keys())))
|
||||||
|
|
||||||
last = None
|
last = None
|
||||||
for attempt in range(_MAX_ATTEMPTS):
|
for attempt in range(_MAX_ATTEMPTS):
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user