心跳发送增加 15 秒间隔判断,发送后也更新 last_yield_time
This commit is contained in:
parent
8cab0180e3
commit
b8368068ae
@ -155,6 +155,7 @@ async def enhanced_generate_stream_response(
|
||||
|
||||
# 输出控制器:确保 preamble 先输出,然后是 agent stream
|
||||
preamble_output_done = False
|
||||
last_yield_time = time.time()
|
||||
|
||||
while True:
|
||||
try:
|
||||
@ -165,6 +166,7 @@ async def enhanced_generate_stream_response(
|
||||
# 立即输出 preamble 内容
|
||||
if item_data:
|
||||
yield item_data
|
||||
last_yield_time = time.time()
|
||||
preamble_output_done = True
|
||||
|
||||
elif item_type == "preamble_done":
|
||||
@ -175,6 +177,7 @@ async def enhanced_generate_stream_response(
|
||||
# Agent stream 内容,需要等待 preamble 输出完成
|
||||
if preamble_output_done:
|
||||
yield item_data
|
||||
last_yield_time = time.time()
|
||||
else:
|
||||
# preamble 还没输出,先放回队列
|
||||
await output_queue.put((item_type, item_data))
|
||||
@ -191,9 +194,11 @@ async def enhanced_generate_stream_response(
|
||||
if all(task.done() for task in [preamble_task_handle, agent_task_handle]):
|
||||
# 所有任务都完成了,退出循环
|
||||
break
|
||||
# 发送空内容心跳包保持连接活跃,防止 nginx/客户端超时断开
|
||||
heartbeat_chunk = create_stream_chunk(f"chatcmpl-heartbeat", config.model_name, "")
|
||||
yield f"data: {json.dumps(heartbeat_chunk, ensure_ascii=False)}\n\n"
|
||||
# 15秒无消息输出时才发送心跳包保持连接活跃
|
||||
if time.time() - last_yield_time >= 15:
|
||||
heartbeat_chunk = create_stream_chunk(f"chatcmpl-heartbeat", config.model_name, "")
|
||||
yield f"data: {json.dumps(heartbeat_chunk, ensure_ascii=False)}\n\n"
|
||||
last_yield_time = time.time()
|
||||
continue
|
||||
|
||||
# 发送结束标记
|
||||
|
||||
Loading…
Reference in New Issue
Block a user