Adding initial db to queue

This commit is contained in:
Brett Williams
2023-05-23 23:52:29 -05:00
parent 6c3d0e8f6e
commit 4446c61f1d
2 changed files with 27 additions and 9 deletions

View File

@@ -4,10 +4,12 @@ import os
import platform
from datetime import datetime
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
import psutil
import requests
from .scheduled_job import ScheduledJob
from .scheduled_job import ScheduledJob, Base
from .render_workers.render_worker import RenderStatus
logger = logging.getLogger()
@@ -23,6 +25,11 @@ class JobNotFoundError(Exception):
class RenderQueue:
engine = create_engine('sqlite:///database.db')
Base.metadata.create_all(engine)
Session = sessionmaker(bind=engine)
session = Session()
job_queue = []
render_clients = []
maximum_renderer_instances = {'blender': 2, 'aerender': 1, 'ffmpeg': 4}
@@ -45,6 +52,8 @@ class RenderQueue:
cls.job_queue.append(render_job)
if force_start:
cls.start_job(render_job)
cls.session.add(render_job)
cls.session.commit()
else:
# todo: implement client rendering
logger.warning('remote client rendering not implemented yet')

View File

@@ -7,12 +7,18 @@ import threading
import uuid
from datetime import datetime
from sqlalchemy import Column, Integer, String, DateTime, JSON
from sqlalchemy.ext.declarative import declarative_base
from .render_workers.render_worker import RenderStatus, RenderWorkerFactory
logger = logging.getLogger()
Base = declarative_base()
class ScheduledJob:
class ScheduledJob(Base):
__tablename__ = 'scheduled_jobs'
id = Column(String, primary_key=True)
# Get file hash on bg thread
def __get_file_hash(self):
@@ -22,18 +28,21 @@ class ScheduledJob:
def __init__(self, renderer, input_path, output_path, args, priority=2, owner=None, client=None, notify=None,
custom_id=None, name=None):
self.id = custom_id or self.generate_id()
self.owner = owner
self.renderer = renderer
self.input_path = input_path
self.output_path = output_path
self.priority = priority
self.owner = owner
self.client = client
self.notify = notify
self.date_created = datetime.now()
self.scheduled_start = None
self.renderer = renderer
self.name = name or os.path.basename(input_path) + '_' + self.date_created.strftime("%Y.%m.%d_%H.%M.%S")
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')
self.worker.validate()
self.worker_object = RenderWorkerFactory.create_worker(renderer, input_path, output_path, args)
self.worker_object.log_path = os.path.join(os.path.dirname(input_path), self.name + '.log')
self.worker_object.validate()
self.file_hash = None
threading.Thread(target=self.__get_file_hash).start() # get file hash on bg thread
@@ -122,10 +131,10 @@ class ScheduledJob:
return self.worker.total_frames
def work_path(self):
return os.path.dirname(self.worker.output_path)
return os.path.dirname(self.output_path)
def file_list(self):
job_dir = os.path.dirname(self.worker.output_path)
job_dir = os.path.dirname(self.output_path)
return glob.glob(os.path.join(job_dir, '*'))
def log_path(self):