FIX midjourney修图改为异步

This commit is contained in:
kyj@bowong.ai 2025-07-16 17:51:37 +08:00
parent c8eabc01fc
commit 5fee351bbd
1 changed files with 20 additions and 10 deletions

View File

@ -203,7 +203,8 @@ class ModalMidJourneyGenerateImage:
"required": { "required": {
"prompt": ("STRING", {"default": "一幅宏大壮美的山川画卷", "multiline": True}), "prompt": ("STRING", {"default": "一幅宏大壮美的山川画卷", "multiline": True}),
"image": ("IMAGE",), "image": ("IMAGE",),
"endpoint": ("STRING", {"default": "bowongai-dev--bowong-ai-video-gemini-fastapi-webapp.modal.run"}), "endpoint": ("STRING", {"default": "bowongai-dev--text-video-agent-fastapi-app.modal.run"}),
"timeout": ("INT", {"default": 120, "min": 10, "max": 600}),
}, },
} }
@ -213,15 +214,13 @@ class ModalMidJourneyGenerateImage:
OUTPUT_NODE = False OUTPUT_NODE = False
CATEGORY = "不忘科技-自定义节点🚩/图片/Midjourney" CATEGORY = "不忘科技-自定义节点🚩/图片/Midjourney"
def process(self, prompt: str, image:torch.Tensor, endpoint: str): def process(self, prompt: str, image:torch.Tensor, endpoint: str, timeout: int):
try: try:
logger.info("请求同步接口") logger.info("请求异步接口")
interval = 2
format = "PNG" format = "PNG"
job_resp = send_request("post", f"https://{endpoint}/mj_router/sync/generate/image", job_resp = send_request("post", f"https://{endpoint}/api/mj/async/generate/image?prompt={prompt}",
headers={'Authorization': 'Bearer bowong7777'}, headers={'Authorization': 'Bearer bowong7777'},
data={
"prompt": prompt,
},
files={"img_file": ( files={"img_file": (
'image.' + format.lower(), tensor_to_image_bytes(image, format), 'image.' + format.lower(), tensor_to_image_bytes(image, format),
f'image/{format.lower()}')}, f'image/{format.lower()}')},
@ -230,9 +229,20 @@ class ModalMidJourneyGenerateImage:
job_resp = job_resp.json() job_resp = job_resp.json()
if "失败" in job_resp["msg"] or "fail" in job_resp["msg"] or "error" in job_resp["msg"]: if "失败" in job_resp["msg"] or "fail" in job_resp["msg"] or "error" in job_resp["msg"]:
raise Exception("生成失败") raise Exception("生成失败")
result_url = job_resp["data"] job_id = job_resp["data"]
logger.success("img_url: "+result_url) for _ in range(0, timeout//interval, interval):
return (url_to_tensor(result_url),) logger.info("查询结果")
resp = send_request("get", f"https://{endpoint}/api/mj/async/query/status?task_id={job_id}",
headers={'Authorization': 'Bearer bowong7777'}, timeout=30)
resp.raise_for_status()
if resp.json()["status"]:
if "fail" in resp.json()["msg"]:
raise Exception("生成失败,可能因为风控")
result_url = resp.json()["data"]
logger.success("img_url: "+result_url)
return (url_to_tensor(result_url),)
sleep(interval)
raise Exception("等待超时")
except Exception as e: except Exception as e:
raise e raise e