Sometimes progress messages of images with metadata are not valid. Need to investigate why.

This commit is contained in:
Benjamin Berman 2025-09-16 22:04:39 -07:00
parent e7f7a8f80c
commit db546c4826
2 changed files with 13 additions and 7 deletions

View File

@ -49,7 +49,7 @@ from ..cmd import folder_paths
from ..component_model.abstract_prompt_queue import AbstractPromptQueue, AsyncAbstractPromptQueue
from ..component_model.encode_text_for_progress import encode_text_for_progress
from ..component_model.executor_types import ExecutorToClientProgress, StatusMessage, QueueInfo, ExecInfo, \
UnencodedPreviewImageMessage
UnencodedPreviewImageMessage, PreviewImageWithMetadataMessage
from ..component_model.file_output_path import file_output_path
from ..component_model.queue_types import QueueItem, HistoryEntry, BinaryEventTypes, TaskInvocation, ExecutionError, \
ExecutionStatus
@ -1095,11 +1095,12 @@ class PromptServer(ExecutorToClientProgress):
prompt_info['exec_info'] = exec_info
return prompt_info
async def send(self, event, data: UnencodedPreviewImageMessage | tuple[UnencodedPreviewImageMessage, PreviewImageMetadata] | bytes | bytearray | dict, sid=None):
async def send(self, event, data: UnencodedPreviewImageMessage | PreviewImageWithMetadataMessage | bytes | bytearray | dict, sid=None):
if event == BinaryEventTypes.UNENCODED_PREVIEW_IMAGE:
await self.send_image(data, sid=sid)
elif event == BinaryEventTypes.PREVIEW_IMAGE_WITH_METADATA:
# data is (preview_image, metadata)
data: PreviewImageWithMetadataMessage
preview_image, metadata = data
await self.send_image_with_metadata(preview_image, metadata, sid=sid)
elif isinstance(data, (bytes, bytearray)):
@ -1131,9 +1132,13 @@ class PromptServer(ExecutorToClientProgress):
await self.send_bytes(BinaryEventTypes.PREVIEW_IMAGE, preview_bytes, sid=sid)
async def send_image_with_metadata(self, image_data: UnencodedPreviewImageMessage, metadata: Optional[PreviewImageMetadata] = None, sid=None):
image_type = image_data[0]
image = image_data[1]
max_size = image_data[2]
try:
image_type = image_data[0]
image = image_data[1]
max_size = image_data[2]
except Exception as exc_info:
logger.warning(f"tried to send_image_with_metadata but an error occurred, aboring send, image_data={image_data} metadata={metadata} sid={sid}", exc_info=exc_info)
return
if max_size is not None:
if hasattr(Image, 'Resampling'):
resampling = Image.Resampling.BILINEAR

View File

@ -9,7 +9,7 @@ from PIL import Image
from tqdm import tqdm
from typing_extensions import override
from comfy.component_model.executor_types import ExecutorToClientProgress
from comfy.component_model.executor_types import ExecutorToClientProgress, PreviewImageWithMetadataMessage
from comfy.component_model.module_property import create_module_properties
from comfy.execution_context import current_execution_context
from comfy.progress_types import AbstractProgressRegistry, PreviewImageMetadata
@ -232,9 +232,10 @@ class WebUIProgressHandler(ProgressHandler):
),
"real_node_id": self.registry.dynprompt.get_real_node_id(node_id),
}
message: PreviewImageWithMetadataMessage = (image, metadata)
self.server_instance.send_sync(
BinaryEventTypes.PREVIEW_IMAGE_WITH_METADATA,
(image, metadata),
message,
self.server_instance.client_id,
)