Combine RenderWorker creation into RenderJob creation. Misc cleanup.

This commit is contained in:
Brett Williams
2022-10-28 09:58:32 -07:00
parent 39d6e95e9a
commit 37f91c6f8a
10 changed files with 108 additions and 396 deletions

View File

@@ -1,4 +1,4 @@
#!/usr/bin/env python
#!/usr/bin/env python3
import datetime
import os.path
import socket
@@ -18,7 +18,7 @@ from rich.text import Text
from rich.tree import Tree
from utilities.render_worker import RenderStatus, string_to_status
from server import start_server
from start_server import start_server
"""
The RenderDashboard is designed to be run on a remote machine or on the local server
@@ -32,7 +32,7 @@ status_colors = {RenderStatus.ERROR: "red", RenderStatus.CANCELLED: 'orange1', R
categories = [RenderStatus.RUNNING, RenderStatus.ERROR, RenderStatus.NOT_STARTED, RenderStatus.SCHEDULED,
RenderStatus.COMPLETED, RenderStatus.CANCELLED]
renderer_colors = {'ffmpeg': '[magenta]', 'Blender': '[orange1]', 'aerender':'[purple'}
renderer_colors = {'ffmpeg': '[magenta]', 'Blender': '[orange1]', 'aerender': '[purple]'}
local_hostname = socket.gethostname()
@@ -90,9 +90,9 @@ def create_node_tree(all_server_data) -> Tree:
for job in jobs_to_display:
renderer = f"{renderer_colors[job['renderer']]}{job['renderer']}[default]"
filename = os.path.basename(job['render']['input']).split('.')[0]
filename = os.path.basename(job['worker']['input_path']).split('.')[0]
if job['status'] == 'running':
jobs_tree.add(f"[bold]{renderer} {filename} ({job['id']}) - {status_string_to_color(job['status'])}{(float(job['render']['percent_complete']) * 100):.1f}%")
jobs_tree.add(f"[bold]{renderer} {filename} ({job['id']}) - {status_string_to_color(job['status'])}{(float(job['worker']['percent_complete']) * 100):.1f}%")
else:
jobs_tree.add(f"{filename} ({job['id']}) - {status_string_to_color(job['status'])}{job['status'].title()}")
@@ -129,18 +129,18 @@ def create_jobs_table(all_server_data) -> Table:
job_color = '[{}]'.format(status_colors[job_status])
job_text = f"{job_color}" + job_status.value.title()
if job_status == RenderStatus.ERROR and job['render']['errors']:
job_text = job_text + "\n" + "\n".join(job['render']['errors'])
if job_status == RenderStatus.ERROR and job['worker']['errors']:
job_text = job_text + "\n" + "\n".join(job['worker']['errors'])
elapsed_time = job['render'].get('time_elapsed', 'unknown')
elapsed_time = job['worker'].get('time_elapsed', 'unknown')
# Project name
project_name = job_color + os.path.basename(job['render']['input'])
project_name = job_color + os.path.basename(job['worker']['input_path'])
project_name = project_name.replace(".", "[default].")
if job_status == RenderStatus.RUNNING:
job_text = f"{job_color}[bold]Running - {float(job['render']['percent_complete']) * 100:.1f}%"
delta = datetime.datetime.now() - datetime.datetime.fromisoformat(job['render']['start_time'])
job_text = f"{job_color}[bold]Running - {float(job['worker']['percent_complete']) * 100:.1f}%"
delta = datetime.datetime.now() - datetime.datetime.fromisoformat(job['worker']['start_time'])
elapsed_time = "[bold]" + str(delta)
project_name = "[bold]" + project_name
elif job_status == RenderStatus.CANCELLED or job_status == RenderStatus.ERROR:
@@ -156,12 +156,12 @@ def create_jobs_table(all_server_data) -> Table:
table.add_row(
job['id'],
project_name,
os.path.basename(job['render']['output']),
renderer_colors.get(job['renderer'], '[cyan]') + job['renderer'] + '[default]-' + job['render']['renderer_version'],
os.path.basename(job['worker']['output_path']),
renderer_colors.get(job['renderer'], '[cyan]') + job['renderer'] + '[default]-' + job['worker']['renderer_version'],
f"[{priority_color}]{job['priority']}",
job_text,
elapsed_time,
str(max(int(job['render']['total_frames']), 1)),
str(max(int(job['worker']['total_frames']), 1)),
client_title
)
@@ -256,8 +256,8 @@ if __name__ == '__main__':
# Divide the "screen" in to three parts
layout.split(
Layout(name="header", size=3),
Layout(ratio=1, name="main"),
Layout(size=10, name="footer"),
Layout(ratio=1, name="main")
# Layout(size=10, name="footer"),
)
# Divide the "main" layout in to "side" and "body"
layout["main"].split_row(