Improve job management. Remove archived flag.

This commit is contained in:
Brett Williams
2022-10-30 14:21:06 -07:00
parent 5785989af4
commit a71e3fe119
3 changed files with 8 additions and 15 deletions

View File

@@ -22,7 +22,7 @@ server = Flask(__name__)
@server.get('/jobs')
def jobs_json():
return [x.json_safe_copy() for x in RenderQueue.job_queue if not x.archived]
return [x.json_safe_copy() for x in RenderQueue.job_queue]
@server.get('/jobs/<status_val>')
@@ -130,7 +130,7 @@ def full_status():
@server.get('/snapshot')
def snapshot():
server_status = RenderQueue.status()
server_jobs = [x.json_safe_copy() for x in RenderQueue.job_queue if not x.archived]
server_jobs = [x.json_safe_copy() for x in RenderQueue.job_queue]
server_data = {'status': server_status, 'jobs': server_jobs, 'timestamp': datetime.now().isoformat()}
return server_data
@@ -270,7 +270,6 @@ def cancel_job():
else:
found = [x for x in RenderQueue.job_queue if x.id == job_id]
if len(found) > 1:
# logger.error('Multiple jobs found for ID {}'.format(job_id))
return f'multiple jobs found for ID {job_id}', 400
elif found:
success = RenderQueue.cancel_job(found[0])

View File

@@ -23,7 +23,6 @@ class RenderJob:
self.scheduled_start = None
self.renderer = renderer
self.name = name or os.path.basename(input_path) + '_' + self.date_created.isoformat()
self.archived = False
self.worker = RenderWorkerFactory.create_worker(renderer, input_path, output_path, args)
self.worker.log_path = os.path.join(os.path.dirname(input_path), self.name + '.log')
@@ -35,7 +34,9 @@ class RenderJob:
return self.worker.status
def file_hash(self):
return hashlib.md5(open(self.worker.input_path, 'rb').read()).hexdigest()
if os.path.exists(self.worker.input_path):
return hashlib.md5(open(self.worker.input_path, 'rb').read()).hexdigest()
return None
def json_safe_copy(self):
"""Converts RenderJob into JSON-friendly dict"""

View File

@@ -56,10 +56,8 @@ class RenderQueue:
return pending_jobs
@classmethod
def jobs_with_status(cls, status, priority_sorted=False, include_archived=True):
def jobs_with_status(cls, status, priority_sorted=False):
found_jobs = [x for x in cls.job_queue if x.render_status() == status]
if not include_archived:
found_jobs = [x for x in found_jobs if not x.archived]
if priority_sorted:
found_jobs = sorted(found_jobs, key=lambda a: a.priority, reverse=False)
return found_jobs
@@ -73,8 +71,8 @@ class RenderQueue:
def clear_history(cls):
to_remove = [x for x in cls.job_queue if x.render_status() in [RenderStatus.CANCELLED,
RenderStatus.COMPLETED, RenderStatus.ERROR]]
for x in to_remove:
x.archived = True
for job_to_remove in to_remove:
cls.job_queue.remove(job_to_remove)
cls.save_state()
@classmethod
@@ -204,11 +202,6 @@ class RenderQueue:
return stats
@classmethod
def all_jobs(cls):
all_jobs = [x for x in cls.job_queue if not x.archived]
return all_jobs
@classmethod
def register_client(cls, hostname):