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