From 2fccbf835691ade3ce254fb4c3363c9ff7588e64 Mon Sep 17 00:00:00 2001 From: Your Name Date: Thu, 27 Nov 2025 19:44:26 +0900 Subject: [PATCH] Handle process_video worker exceptions --- supervision/utils/video.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/supervision/utils/video.py b/supervision/utils/video.py index 0ece0916d..23c2e053f 100644 --- a/supervision/utils/video.py +++ b/supervision/utils/video.py @@ -302,22 +302,37 @@ def writer_thread(video_sink: VideoSink) -> None: desc=progress_message, ) + exception_in_worker: Exception | None = None + read_finished = False + try: while True: read_item = frame_read_queue.get() if read_item is None: + read_finished = True break frame_index, frame = read_item - processed_frame = callback(frame, frame_index) + try: + processed_frame = callback(frame, frame_index) + except Exception as exc: + exception_in_worker = exc + break frame_write_queue.put(processed_frame) progress_bar.update(1) finally: frame_write_queue.put(None) + if not read_finished: + while True: + read_item = frame_read_queue.get() + if read_item is None: + break reader_worker.join() writer_worker.join() progress_bar.close() + if exception_in_worker is not None: + raise exception_in_worker class FPSMonitor: