From e23a70af34a7da1ff46941a3aa72d403fd3a47d5 Mon Sep 17 00:00:00 2001 From: Vladimir Mandic Date: Mon, 17 Aug 2026 18:07:06 +0200 Subject: [PATCH] fix processing api Signed-off-by: Vladimir Mandic --- CHANGELOG.md | 1 + modules/api/process.py | 15 +++++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 602f5fdea..89cd9ef4b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -78,6 +78,7 @@ - metadata: image metadata handle correct image index - gguf: transformer loader - scripts: mixture-of-diffusers and mixture-tiling update to use igwn-segments + - api: process ## Update for 2026-08-07 diff --git a/modules/api/process.py b/modules/api/process.py index ef75f902e..0bed6557b 100644 --- a/modules/api/process.py +++ b/modules/api/process.py @@ -1,6 +1,7 @@ from threading import Lock from pydantic import BaseModel, Field # pylint: disable=no-name-in-module from fastapi.responses import JSONResponse +from fastapi.exceptions import HTTPException from modules.api.helpers import decode_base64_to_image, encode_pil_to_base64 from modules import errors, shared, postprocessing from modules.api import models, helpers @@ -282,7 +283,12 @@ class APIProcess: reqDict['image'] = helpers.decode_base64_to_image(reqDict['image']) with self.queue_lock: result = postprocessing.run_extras(extras_mode=0, image_folder="", input_dir="", output_dir="", video="", save_output=False, script_args=script_args, **reqDict) - return models.ResProcessImage(image=helpers.encode_pil_to_base64(result[0][0]), html_info=result[1]) + if len(result) != 4: + raise HTTPException(status_code=500, detail="Invalid processing response") + outputs, _video, info, _params = result + if outputs is None or len(outputs) == 0: + raise HTTPException(status_code=500, detail="Invalid processing response") + return models.ResProcessImage(image=helpers.encode_pil_to_base64(outputs[0]), html_info=info) def extras_batch_images_api(self, req: models.ReqProcessBatch): """Upscale or postprocess a batch of images using the configured upscaler pipeline.""" @@ -291,4 +297,9 @@ class APIProcess: image_folder = [helpers.decode_base64_to_image(x.data) for x in image_list] with self.queue_lock: result = postprocessing.run_extras(extras_mode=1, image_folder=image_folder, image="", input_dir="", output_dir="", video="", save_output=False, script_args=script_args, **reqDict) - return models.ResProcessBatch(images=list(map(helpers.encode_pil_to_base64, result[0])), html_info=result[1]) + if len(result) != 4: + raise HTTPException(status_code=500, detail="Invalid processing response") + outputs, _video, info, _params = result + if outputs is None or len(outputs) == 0: + raise HTTPException(status_code=500, detail="Invalid processing response") + return models.ResProcessBatch(images=list(map(helpers.encode_pil_to_base64, outputs)), html_info=info)