New PreviewManager to handle generating previews asynchronously (#86)

* Add PreviewManager

* Refactoring and better error handling

* Integrate PreviewManager into api_server.py

* Integrate PreviewManager into distributed_job_manager.py

* Add method to preview_manager.py to delete previews and integrate it into api_server

* Misc logging improvements

* Misc code cleanup

* Replace existing preview on job completion - Minor code fixes
This commit is contained in:
2024-08-04 16:45:46 -05:00
committed by GitHub
parent 21011e47ca
commit 1cdb7810bf
5 changed files with 203 additions and 98 deletions

View File

@@ -99,6 +99,9 @@ class BaseRenderWorker(Base):
self.__process = None
self.last_output = None
def __repr__(self):
return f"<{self.__class__.__name__}|{self.id}|{self.name}|{self.status}|{self.input_path}>"
@property
def total_frames(self):
return (self.end_frame or self.project_length) - self.start_frame + 1
@@ -131,9 +134,8 @@ class BaseRenderWorker(Base):
generated_args = [str(x) for x in self.generate_worker_subprocess()]
generated_args_flags = [x for x in generated_args if x.startswith('-')]
if len(generated_args_flags) != len(set(generated_args_flags)):
msg = "Cannot generate subprocess - Multiple arg conflicts detected"
msg = f"Cannot generate subprocess - Multiple arg conflicts detected: {generated_args}"
logger.error(msg)
logger.debug(f"Generated args for subprocess: {generated_args}")
raise ValueError(msg)
return generated_args