修复jmidjourney流式数据没有实时推送的问题

This commit is contained in:
jingrow 2026-04-15 19:13:42 +08:00
parent 5b17573c46
commit e5244cba75
2 changed files with 6 additions and 24 deletions

View File

@ -12,27 +12,6 @@ service = MidjourneyService()
@router.post(settings.generate_route) @router.post(settings.generate_route)
@jingrow_api_verify_and_billing(api_name=settings.api_name) @jingrow_api_verify_and_billing(api_name=settings.api_name)
async def generate_image(data: dict, request: Request):
if "prompt" not in data:
raise HTTPException(status_code=400, detail="缺少prompt参数")
prompt = data["prompt"]
config = data.get("config", {})
async def generate() -> AsyncGenerator[str, None]:
async for result in service.generate_image(prompt, config):
yield json.dumps(result, ensure_ascii=False) + "\n"
return StreamingResponse(
generate(),
media_type="application/x-ndjson",
headers={"X-Content-Type-Options": "nosniff"}
)
@router.post(settings.ve_generate_route)
@jingrow_api_verify_and_billing(api_name=settings.api_name)
async def ve_generate_image(data: dict, request: Request): async def ve_generate_image(data: dict, request: Request):
""" """
使用 VectorEngine API 生成图片 使用 VectorEngine API 生成图片
@ -61,7 +40,11 @@ async def ve_generate_image(data: dict, request: Request):
yield json.dumps(result, ensure_ascii=False) + "\n" yield json.dumps(result, ensure_ascii=False) + "\n"
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"
}
) )

View File

@ -12,7 +12,6 @@ class Settings(BaseSettings):
# API路由配置 # API路由配置
router_prefix: str = "/jmidjourney" router_prefix: str = "/jmidjourney"
generate_route: str = "/generate" # 保留用于兼容 generate_route: str = "/generate" # 保留用于兼容
ve_generate_route: str = "/ve/generate" # VectorEngine 生成图片的路由
api_name: str = "jmidjourney" # 默认API名称 api_name: str = "jmidjourney" # 默认API名称
upload_url: str = "http://images.jingrow.com:8080/api/v1/image" upload_url: str = "http://images.jingrow.com:8080/api/v1/image"