diff --git a/comfy/cmd/server.py b/comfy/cmd/server.py index 2ec669721..682cf8602 100644 --- a/comfy/cmd/server.py +++ b/comfy/cmd/server.py @@ -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 diff --git a/comfy_execution/progress.py b/comfy_execution/progress.py index 6e524e80d..6591fbbd6 100644 --- a/comfy_execution/progress.py +++ b/comfy_execution/progress.py @@ -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, )