diff --git a/src/api/api_server.py b/src/api/api_server.py index b9c58d1..2900360 100755 --- a/src/api/api_server.py +++ b/src/api/api_server.py @@ -62,7 +62,7 @@ def jobs_json(): return {'jobs': all_jobs, 'token': job_cache_token} except Exception as e: logger.exception(f"Exception fetching jobs_json: {e}") - return [], 500 + return {}, 500 @server.get('/api/jobs_long_poll') @@ -76,11 +76,11 @@ def long_polling_jobs(): return all_jobs # Break after 30 seconds to avoid gateway timeout if time.time() - start_time > 30: - return [], 204 + return {}, 204 time.sleep(1) except Exception as e: logger.exception(f"Exception fetching long_polling_jobs: {e}") - return [], 500 + return {}, 500 @server.route('/api/job//thumbnail') diff --git a/src/engines/core/base_worker.py b/src/engines/core/base_worker.py index 70cafb3..a77b696 100644 --- a/src/engines/core/base_worker.py +++ b/src/engines/core/base_worker.py @@ -39,6 +39,7 @@ class BaseRenderWorker(Base): end_frame = Column(Integer, nullable=True) parent = Column(String, nullable=True) children = Column(MutableDict.as_mutable(JSON)) + args = Column(MutableDict.as_mutable(JSON)) name = Column(String) file_hash = Column(String) _status = Column(String) @@ -288,6 +289,8 @@ class BaseRenderWorker(Base): self.status = RenderStatus.CANCELLED def percent_complete(self): + if self.status == RenderStatus.COMPLETED: + return 1.0 return 0 def _parse_stdout(self, line): @@ -329,7 +332,8 @@ class BaseRenderWorker(Base): 'end_frame': self.end_frame, 'total_frames': self.total_frames, 'last_output': getattr(self, 'last_output', None), - 'log_path': self.log_path() + 'log_path': self.log_path(), + 'args': self.args } # convert to json and back to auto-convert dates to iso format