修复jmidjourney流式数据没有实时推送的问题
This commit is contained in:
parent
539b0a3725
commit
3b2b4da894
@ -40,7 +40,11 @@ async def ve_generate_image(data: dict, request: Request):
|
||||
yield json.dumps(result, ensure_ascii=False) + "\n"
|
||||
|
||||
return StreamingResponse(
|
||||
generate(),
|
||||
generate(),
|
||||
media_type="application/x-ndjson",
|
||||
headers={"X-Content-Type-Options": "nosniff"}
|
||||
headers={
|
||||
"Cache-Control": "no-cache",
|
||||
"X-Accel-Buffering": "no",
|
||||
"X-Content-Type-Options": "nosniff"
|
||||
}
|
||||
)
|
||||
|
||||
@ -335,6 +335,7 @@ class MidjourneyService:
|
||||
"status": "error",
|
||||
"message": "未配置 VectorEngine Token"
|
||||
}
|
||||
await asyncio.sleep(0) # 让出控制权,确保数据立即推送
|
||||
return
|
||||
|
||||
# 1. 提交任务
|
||||
@ -353,6 +354,7 @@ class MidjourneyService:
|
||||
"status": "error",
|
||||
"message": submit_result.get("message", "提交任务失败,未获取到任务ID")
|
||||
}
|
||||
await asyncio.sleep(0) # 让出控制权,确保数据立即推送
|
||||
return
|
||||
|
||||
logger.info(f"VectorEngine 任务已提交,任务ID: {task_id}")
|
||||
@ -360,6 +362,7 @@ class MidjourneyService:
|
||||
"status": "submitted",
|
||||
"task_id": task_id
|
||||
}
|
||||
await asyncio.sleep(0) # 让出控制权,确保数据立即推送
|
||||
|
||||
# 2. 轮询任务状态
|
||||
polling_count = 0
|
||||
@ -395,6 +398,7 @@ class MidjourneyService:
|
||||
"progress": progress_val,
|
||||
"task_id": task_id
|
||||
}
|
||||
await asyncio.sleep(0) # 让出控制权,确保数据立即推送
|
||||
|
||||
# 检查任务完成状态
|
||||
if status == "SUCCESS":
|
||||
@ -420,6 +424,7 @@ class MidjourneyService:
|
||||
logger.error(f"分割图像失败: {str(e)}")
|
||||
|
||||
yield response
|
||||
await asyncio.sleep(0) # 让出控制权,确保数据立即推送
|
||||
return
|
||||
|
||||
elif status in ("FAILURE", "FAILED"):
|
||||
@ -429,6 +434,7 @@ class MidjourneyService:
|
||||
"message": fail_reason,
|
||||
"task_id": task_id
|
||||
}
|
||||
await asyncio.sleep(0) # 让出控制权,确保数据立即推送
|
||||
return
|
||||
|
||||
elif status == "CANCELLED":
|
||||
@ -437,6 +443,7 @@ class MidjourneyService:
|
||||
"message": "任务已取消",
|
||||
"task_id": task_id
|
||||
}
|
||||
await asyncio.sleep(0) # 让出控制权,确保数据立即推送
|
||||
return
|
||||
|
||||
# 其他状态(如 IN_PROGRESS, SUBMITTED)继续轮询
|
||||
@ -448,3 +455,4 @@ class MidjourneyService:
|
||||
"message": f"任务超时,已轮询 {settings.vectorengine_max_polling_attempts} 次",
|
||||
"task_id": task_id
|
||||
}
|
||||
await asyncio.sleep(0) # 让出控制权,确保数据立即推送
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user