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

@@ -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):