Misc Cleanup

This commit is contained in:
Brett Williams
2022-12-11 18:01:30 -08:00
parent d1a905b805
commit 9ac22a5555
7 changed files with 58 additions and 164 deletions

View File

@@ -54,7 +54,8 @@ def index():
def job_detail(job_id):
found_job = RenderQueue.job_with_id(job_id)
if found_job:
table_html = json2html.json2html.convert(json=found_job.json(), table_attributes='class="table is-narrow is-striped"')
table_html = json2html.json2html.convert(json=found_job.json(),
table_attributes='class="table is-narrow is-striped"')
media_url = None
if found_job.file_list():
media_basename = os.path.basename(found_job.file_list()[0])
@@ -230,11 +231,12 @@ def add_job_handler():
elif request.form.get('json', None):
jobs_list = json.loads(request.form['json'])
else:
form_dict = dict(request.form)
# Cleanup flat form data into nested structure
form_dict = {k: v for k, v in dict(request.form).items() if v}
args = {}
arg_keys = [k for k in form_dict.keys() if '-arg_' in k]
for key in arg_keys:
if form_dict['renderer'] in key:
if form_dict['renderer'] in key or 'AnyRenderer' in key:
cleaned_key = key.split('-arg_')[-1]
args[cleaned_key] = form_dict[key]
form_dict.pop(key)
@@ -285,7 +287,6 @@ def add_job_handler():
def add_job(job_params, remove_job_dir_on_failure=False):
def remove_job_dir():
if remove_job_dir_on_failure and job_dir and os.path.exists(job_dir):
logger.debug(f"Removing job dir: {job_dir}")
@@ -298,7 +299,7 @@ def add_job(job_params, remove_job_dir_on_failure=False):
output_path = job_params.get("output_path", None)
priority = int(job_params.get('priority', 2))
args = job_params.get('args', {})
client = job_params.get('client', RenderQueue.host_name)
client = job_params.get('client', None) or RenderQueue.host_name
force_start = job_params.get('force_start', False)
custom_id = None
job_dir = None
@@ -448,4 +449,3 @@ def renderer_info():
def upload_file_page():
return render_template('upload.html', render_clients=RenderQueue.render_clients,
supported_renderers=RenderWorkerFactory.supported_renderers())

View File

@@ -41,7 +41,6 @@ class RenderJob:
def json(self):
"""Converts RenderJob into JSON-friendly dict"""
import numbers
job_dict = None
try:
job_dict = self.__dict__.copy()
@@ -91,6 +90,9 @@ class RenderJob:
def frame_count(self):
return self.worker.total_frames
def work_path(self):
return os.path.dirname(self.worker.output_path)
def file_list(self):
job_dir = os.path.dirname(self.worker.output_path)
return glob.glob(os.path.join(job_dir, '*'))

View File

@@ -39,8 +39,6 @@ class RenderQueue:
cls.job_queue.append(render_job)
if force_start:
cls.start_job(render_job)
else:
cls.evaluate_queue()
else:
# todo: implement client rendering
logger.warning('remote client rendering not implemented yet')
@@ -88,35 +86,37 @@ class RenderQueue:
cls.render_clients = saved_state.get('clients', {})
for job in saved_state.get('jobs', []):
try:
render_job = RenderJob(renderer=job['renderer'], input_path=job['worker']['input_path'],
output_path=job['worker']['output_path'], args=job['worker']['args'],
priority=job['priority'], client=job['client'])
render_job = RenderJob(renderer=job['renderer'], input_path=job['worker']['input_path'],
output_path=job['worker']['output_path'], args=job['worker']['args'],
priority=job['priority'], client=job['client'])
# Load Worker values
for key, val in job['worker'].items():
if val and key in ['start_time', 'end_time']: # convert date strings back into date objects
render_job.worker.__dict__[key] = datetime.fromisoformat(val)
else:
render_job.worker.__dict__[key] = val
# Load Worker values
for key, val in job['worker'].items():
if val and key in ['start_time', 'end_time']: # convert date strings back into date objects
render_job.worker.__dict__[key] = datetime.fromisoformat(val)
else:
render_job.worker.__dict__[key] = val
render_job.worker.status = RenderStatus[job['status'].upper()]
job.pop('worker', None)
render_job.worker.status = RenderStatus[job['status'].upper()]
job.pop('worker', None)
# Create RenderJob with re-created Renderer object
for key, val in job.items():
if key in ['date_created']: # convert date strings back to datetime objects
render_job.__dict__[key] = datetime.fromisoformat(val)
else:
render_job.__dict__[key] = val
render_job.__delattr__('status')
# Create RenderJob with re-created Renderer object
for key, val in job.items():
if key in ['date_created']: # convert date strings back to datetime objects
render_job.__dict__[key] = datetime.fromisoformat(val)
else:
render_job.__dict__[key] = val
render_job.__delattr__('status')
# Handle older loaded jobs that were cancelled before closing
if render_job.render_status() == RenderStatus.RUNNING:
render_job.worker.status = RenderStatus.CANCELLED
# Handle older loaded jobs that were cancelled before closing
if render_job.render_status() == RenderStatus.RUNNING:
render_job.worker.status = RenderStatus.CANCELLED
# finally add back to render queue
cls.job_queue.append(render_job)
# finally add back to render queue
cls.job_queue.append(render_job)
except Exception as e:
logger.error(f"Unable to load job: {job} - {e}")
cls.last_saved_counts = cls.job_counts()