Halt renders on errors or missing files

This commit is contained in:
Brett Williams
2023-05-27 13:26:10 -05:00
parent cd948634ad
commit 58113f423c
4 changed files with 21 additions and 10 deletions

View File

@@ -64,6 +64,7 @@ class BaseRenderWorker(object):
self.status = RenderStatus.NOT_STARTED
self.warnings = []
self.errors = []
self.halt_on_errors = True
self.failed_attempts = 0
self.maximum_attempts = 1
@@ -162,7 +163,7 @@ class BaseRenderWorker(object):
return_code = self.__process.wait()
self.end_time = datetime.now()
# Return early if job was cancelled
if self.status is RenderStatus.CANCELLED:
if self.status in [RenderStatus.CANCELLED, RenderStatus.ERROR]:
self.is_finished = True
return
@@ -192,17 +193,29 @@ class BaseRenderWorker(object):
return self.__thread.is_alive()
return False
def stop(self):
def log_error(self, error_line):
logger.error(error_line)
self.errors.append(error_line)
if self.halt_on_errors:
self.stop(is_error=True)
def stop(self, is_error=False):
if self.__process:
try:
self.status = RenderStatus.CANCELLED
if self.status in [RenderStatus.RUNNING, RenderStatus.NOT_STARTED, RenderStatus.SCHEDULED]:
if is_error:
err_message = self.errors[-1] if self.errors else 'Unknown error'
logger.error(f"Halting render due to error: {err_message}")
self.status = RenderStatus.ERROR
else:
self.status = RenderStatus.CANCELLED
self.maximum_attempts = 0
process = psutil.Process(self.__process.pid)
for proc in process.children(recursive=True):
proc.kill()
process.kill()
except Exception as e:
logger.error(f"Exception stopping the process: {e}")
logger.debug(f"Error stopping the process: {e}")
def percent_complete(self):
return 0