From 4d620d0ea6508ed0997ad45d35df2819cbbdd485 Mon Sep 17 00:00:00 2001 From: Brett Williams Date: Wed, 24 May 2023 15:41:27 -0500 Subject: [PATCH] Thumbnail generation error handling --- lib/utilities/server_helper.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/lib/utilities/server_helper.py b/lib/utilities/server_helper.py index 745fc9b..a58c105 100644 --- a/lib/utilities/server_helper.py +++ b/lib/utilities/server_helper.py @@ -1,4 +1,5 @@ import json +import logging import os import subprocess import threading @@ -8,6 +9,7 @@ import requests from .ffmpeg_helper import generate_thumbnail, save_first_frame from lib.render_workers.render_worker import RenderStatus +logger = logging.getLogger() def post_job_to_server(input_path, job_list, hostname, server_port=8080): @@ -25,8 +27,12 @@ def generate_thumbnail_for_job(job, thumb_video_path, thumb_image_path, max_widt def generate_thumb_thread(source): in_progress_path = thumb_video_path + '_IN-PROGRESS' subprocess.run(['touch', in_progress_path]) - generate_thumbnail(source_path=source, dest_path=thumb_video_path, max_width=max_width) - os.remove(in_progress_path) + try: + generate_thumbnail(source_path=source, dest_path=thumb_video_path, max_width=max_width) + except Exception as e: + logger.error(f"Error generating thumbnail for {source}: {e}") + finally: + os.remove(in_progress_path) # Determine best source file to use for thumbs if job.render_status() == RenderStatus.COMPLETED: # use finished file for thumb @@ -41,6 +47,9 @@ def generate_thumbnail_for_job(job, thumb_video_path, thumb_image_path, max_widt valid_formats = ['.mp4', '.mov', '.avi', '.mpg', '.mpeg', '.jpg', '.png', '.exr', '.mxf'] is_valid_file_type = any(ele in source_path[0] for ele in valid_formats) if is_valid_file_type and not os.path.exists(thumb_video_path): - save_first_frame(source_path=source_path[0], dest_path=thumb_image_path, max_width=max_width) + try: + save_first_frame(source_path=source_path[0], dest_path=thumb_image_path, max_width=max_width) + except Exception as e: + logger.error(f"Exception saving first frame: {e}") x = threading.Thread(target=generate_thumb_thread, args=(source_path[0],)) x.start()