Engine and downloader refactoring (#50)

* Make downloaders subclass of base_downloader.py

* Link engines and downloaders together for all engines

* Replace / merge worker_factory.py with engine_manager.py
This commit is contained in:
2023-10-29 20:57:26 -05:00
committed by GitHub
parent 22aaa82da7
commit dcc0504d3c
11 changed files with 328 additions and 291 deletions

View File

@@ -11,7 +11,7 @@ from tqdm import tqdm
from werkzeug.utils import secure_filename
from src.distributed_job_manager import DistributedJobManager
from src.engines.core.worker_factory import RenderWorkerFactory
from src.engines.engine_manager import EngineManager
from src.render_queue import RenderQueue
logger = logging.getLogger()
@@ -149,11 +149,11 @@ def create_render_jobs(jobs_list, loaded_project_local_path, job_dir, enable_spl
logger.debug(f"New job output path: {output_path}")
# create & configure jobs
worker = RenderWorkerFactory.create_worker(renderer=job_data['renderer'],
input_path=loaded_project_local_path,
output_path=output_path,
engine_version=job_data.get('engine_version'),
args=job_data.get('args', {}))
worker = EngineManager.create_worker(renderer=job_data['renderer'],
input_path=loaded_project_local_path,
output_path=output_path,
engine_version=job_data.get('engine_version'),
args=job_data.get('args', {}))
worker.status = job_data.get("initial_status", worker.status)
worker.parent = job_data.get("parent", worker.parent)
worker.name = job_data.get("name", worker.name)

View File

@@ -21,7 +21,6 @@ from src.api.server_proxy import RenderServerProxy
from src.api.add_job_helpers import handle_uploaded_project_files, process_zipped_project, create_render_jobs
from src.distributed_job_manager import DistributedJobManager
from src.engines.core.base_worker import string_to_status, RenderStatus
from src.engines.core.worker_factory import RenderWorkerFactory
from src.engines.engine_manager import EngineManager
from src.render_queue import RenderQueue, JobNotFoundError
from src.utilities.misc_helper import system_safe_path, current_system_os, current_system_cpu, current_system_os_version
@@ -390,7 +389,7 @@ def clear_history():
@server.route('/api/status')
def status():
renderer_data = {}
for render_class in RenderWorkerFactory.supported_classes():
for render_class in EngineManager.supported_engines():
if EngineManager.all_versions_for_engine(render_class.name): # only return renderers installed on host
renderer_data[render_class.engine.name()] = \
{'versions': EngineManager.all_versions_for_engine(render_class.engine.name()),
@@ -418,8 +417,8 @@ def status():
@server.get('/api/renderer_info')
def renderer_info():
renderer_data = {}
for engine_name in RenderWorkerFactory.supported_renderers():
engine = RenderWorkerFactory.class_for_name(engine_name).engine
for engine_name in EngineManager.supported_engines():
engine = EngineManager.engine_with_name(engine_name)
# Get all installed versions of engine
installed_versions = EngineManager.all_versions_for_engine(engine_name)
@@ -482,7 +481,7 @@ def delete_engine_download():
@server.get('/api/renderer/<renderer>/args')
def get_renderer_args(renderer):
try:
renderer_engine_class = RenderWorkerFactory.class_for_name(renderer).engine()
renderer_engine_class = EngineManager.engine_with_name(renderer)
return renderer_engine_class.get_arguments()
except LookupError:
return f"Cannot find renderer '{renderer}'", 400
@@ -490,7 +489,7 @@ def get_renderer_args(renderer):
@server.route('/upload')
def upload_file_page():
return render_template('upload.html', supported_renderers=RenderWorkerFactory.supported_renderers())
return render_template('upload.html', supported_renderers=EngineManager.supported_engines())
def start_server(background_thread=False):