Scheduled_job work

This commit is contained in:
Brett Williams
2023-05-24 09:49:25 -05:00
parent 3e35ffddfd
commit dd2ae2d71a
3 changed files with 25 additions and 28 deletions

View File

@@ -41,7 +41,7 @@ class ScheduledJob(Base):
self.name = name or os.path.basename(input_path) + '_' + self.date_created.strftime("%Y.%m.%d_%H.%M.%S")
self.worker_object = RenderWorkerFactory.create_worker(renderer, input_path, output_path, args)
self.worker_object.log_path = os.path.join(os.path.dirname(input_path), self.name + '.log')
self.worker_object.log_path = self.log_path()
self.worker_object.validate()
self.file_hash = None
@@ -62,22 +62,25 @@ class ScheduledJob(Base):
"""Converts RenderJob into JSON-friendly dict"""
job_dict = None
try:
job_dict = self.__dict__.copy()
job_dict['status'] = self.render_status().value
job_dict['time_elapsed'] = self.time_elapsed() if type(self.time_elapsed) != str else self.time_elapsed
job_dict['file_hash'] = self.file_hash
job_dict['percent_complete'] = self.percent_complete()
job_dict['file_list'] = self.file_list()
job_dict['worker'] = self.worker.__dict__.copy()
job_dict['worker']['status'] = job_dict['status']
# remove unwanted keys from dict
keys_to_remove = ['thread', 'process']
for key in job_dict['worker'].keys():
if key.startswith('_'):
keys_to_remove.append(key)
for key in keys_to_remove:
job_dict['worker'].pop(key, None)
job_dict = {
'id': self.id,
'name': self.name,
'input_path': self.input_path,
'output_path': self.output_path,
'priority': self.priority,
'owner': self.owner,
'client': self.client,
'notify': self.notify,
'date_created': self.date_created,
'scheduled_start': self.scheduled_start,
'status': self.render_status().value,
'time_elapsed': self.worker().time_elapsed() if hasattr(self.worker(), 'time_elapsed') else None,
'file_hash': self.file_hash,
'percent_complete': self.percent_complete(),
'file_list': self.file_list(),
'renderer': self.renderer,
'worker': self.worker().json() if hasattr(self.worker(), 'json') else {},
}
# convert to json and back to auto-convert dates to iso format
def date_serializer(o):
@@ -138,11 +141,11 @@ class ScheduledJob(Base):
return glob.glob(os.path.join(job_dir, '*'))
def log_path(self):
return self.worker.log_path
return os.path.join(os.path.dirname(self.input_path), self.name + '.log')
def percent_complete(self):
return self.worker.percent_complete()
@classmethod
def generate_id(cls):
return str(uuid.uuid4()).split('-')[0]
return str(uuid.uuid4()).split('-')[0]