mirror of
https://github.com/blw1138/Zordon.git
synced 2025-12-17 16:58:12 +00:00
Halt renders on errors or missing files
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user