This commit is contained in:
hailin 2025-07-27 16:43:48 +08:00
parent 244d407937
commit 6d8fbdc748
1 changed files with 11 additions and 5 deletions

View File

@ -26,14 +26,20 @@ def log(msg): # 写终端 + 推队列
print(msg, flush=True) print(msg, flush=True)
LOG_Q.put(msg) LOG_Q.put(msg)
def consume_logs(dummy=None): # ✅ dummy 参数占位 prev_log_value = "" # 上一帧的日志内容
"""供 Timer 调用:更新全局 LOG_TXT 并返回最新内容"""
global LOG_TXT def consume_logs(dummy=None):
"""每秒更新 log_box 内容,避免 chat 阻塞 UI 刷新"""
global LOG_TXT, prev_log_value
buf = deque(LOG_TXT.splitlines(), maxlen=400) buf = deque(LOG_TXT.splitlines(), maxlen=400)
while not LOG_Q.empty(): while not LOG_Q.empty():
buf.append(LOG_Q.get()) buf.append(LOG_Q.get())
LOG_TXT = "\n".join(buf) LOG_TXT = "\n".join(buf)
return gr.update(value=LOG_TXT) if LOG_TXT != prev_log_value:
prev_log_value = LOG_TXT
return gr.update(value=LOG_TXT)
return gr.update() # 无更新则不触发前端刷新
# ───────────────────── 后端调用 ───────────────────── # ───────────────────── 后端调用 ─────────────────────
def backend(text, sampling): def backend(text, sampling):
@ -101,7 +107,7 @@ with gr.Blocks(title="调试界面") as demo:
log_state= gr.State("") # 保存全部日志文本 log_state= gr.State("") # 保存全部日志文本
# ────────────── 定时刷新日志 ────────────── # ────────────── 定时刷新日志 ──────────────
timer = gr.Timer(1.0, render=False) # 每秒触发一次 timer = gr.Timer(1.0, render=True) # ✅ 这是关键
timer.tick( # ✅ 不依赖 log_state timer.tick( # ✅ 不依赖 log_state
fn=consume_logs, fn=consume_logs,
inputs=[], # ✅ 空输入,避免绑定 UI 焦点 inputs=[], # ✅ 空输入,避免绑定 UI 焦点