Skip to content

Commit 2fccbf8

Browse files
committed
Handle process_video worker exceptions
1 parent 7f7b25d commit 2fccbf8

File tree

1 file changed

+16
-1
lines changed

1 file changed

+16
-1
lines changed

supervision/utils/video.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -302,22 +302,37 @@ def writer_thread(video_sink: VideoSink) -> None:
302302
desc=progress_message,
303303
)
304304

305+
exception_in_worker: Exception | None = None
306+
read_finished = False
307+
305308
try:
306309
while True:
307310
read_item = frame_read_queue.get()
308311
if read_item is None:
312+
read_finished = True
309313
break
310314

311315
frame_index, frame = read_item
312-
processed_frame = callback(frame, frame_index)
316+
try:
317+
processed_frame = callback(frame, frame_index)
318+
except Exception as exc:
319+
exception_in_worker = exc
320+
break
313321

314322
frame_write_queue.put(processed_frame)
315323
progress_bar.update(1)
316324
finally:
317325
frame_write_queue.put(None)
326+
if not read_finished:
327+
while True:
328+
read_item = frame_read_queue.get()
329+
if read_item is None:
330+
break
318331
reader_worker.join()
319332
writer_worker.join()
320333
progress_bar.close()
334+
if exception_in_worker is not None:
335+
raise exception_in_worker
321336

322337

323338
class FPSMonitor:

0 commit comments

Comments
 (0)