mirror of
https://github.com/blw1138/Zordon.git
synced 2025-12-17 16:58:12 +00:00
Adding initial db to queue
This commit is contained in:
@@ -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')
|
||||
|
||||
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user