mirror of
https://github.com/blw1138/Zordon.git
synced 2025-12-17 08:48:13 +00:00
Adding initial db to queue
This commit is contained in:
@@ -4,10 +4,12 @@ import os
|
|||||||
import platform
|
import platform
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
|
from sqlalchemy import create_engine
|
||||||
|
from sqlalchemy.orm import sessionmaker
|
||||||
import psutil
|
import psutil
|
||||||
import requests
|
import requests
|
||||||
|
|
||||||
from .scheduled_job import ScheduledJob
|
from .scheduled_job import ScheduledJob, Base
|
||||||
from .render_workers.render_worker import RenderStatus
|
from .render_workers.render_worker import RenderStatus
|
||||||
|
|
||||||
logger = logging.getLogger()
|
logger = logging.getLogger()
|
||||||
@@ -23,6 +25,11 @@ class JobNotFoundError(Exception):
|
|||||||
|
|
||||||
|
|
||||||
class RenderQueue:
|
class RenderQueue:
|
||||||
|
|
||||||
|
engine = create_engine('sqlite:///database.db')
|
||||||
|
Base.metadata.create_all(engine)
|
||||||
|
Session = sessionmaker(bind=engine)
|
||||||
|
session = Session()
|
||||||
job_queue = []
|
job_queue = []
|
||||||
render_clients = []
|
render_clients = []
|
||||||
maximum_renderer_instances = {'blender': 2, 'aerender': 1, 'ffmpeg': 4}
|
maximum_renderer_instances = {'blender': 2, 'aerender': 1, 'ffmpeg': 4}
|
||||||
@@ -45,6 +52,8 @@ class RenderQueue:
|
|||||||
cls.job_queue.append(render_job)
|
cls.job_queue.append(render_job)
|
||||||
if force_start:
|
if force_start:
|
||||||
cls.start_job(render_job)
|
cls.start_job(render_job)
|
||||||
|
cls.session.add(render_job)
|
||||||
|
cls.session.commit()
|
||||||
else:
|
else:
|
||||||
# todo: implement client rendering
|
# todo: implement client rendering
|
||||||
logger.warning('remote client rendering not implemented yet')
|
logger.warning('remote client rendering not implemented yet')
|
||||||
|
|||||||
@@ -7,12 +7,18 @@ import threading
|
|||||||
import uuid
|
import uuid
|
||||||
from datetime import datetime
|
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
|
from .render_workers.render_worker import RenderStatus, RenderWorkerFactory
|
||||||
|
|
||||||
logger = logging.getLogger()
|
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
|
# Get file hash on bg thread
|
||||||
def __get_file_hash(self):
|
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,
|
def __init__(self, renderer, input_path, output_path, args, priority=2, owner=None, client=None, notify=None,
|
||||||
custom_id=None, name=None):
|
custom_id=None, name=None):
|
||||||
self.id = custom_id or self.generate_id()
|
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.priority = priority
|
||||||
|
self.owner = owner
|
||||||
self.client = client
|
self.client = client
|
||||||
self.notify = notify
|
self.notify = notify
|
||||||
self.date_created = datetime.now()
|
self.date_created = datetime.now()
|
||||||
self.scheduled_start = None
|
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.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_object = 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_object.log_path = os.path.join(os.path.dirname(input_path), self.name + '.log')
|
||||||
self.worker.validate()
|
self.worker_object.validate()
|
||||||
|
|
||||||
self.file_hash = None
|
self.file_hash = None
|
||||||
threading.Thread(target=self.__get_file_hash).start() # get file hash on bg thread
|
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
|
return self.worker.total_frames
|
||||||
|
|
||||||
def work_path(self):
|
def work_path(self):
|
||||||
return os.path.dirname(self.worker.output_path)
|
return os.path.dirname(self.output_path)
|
||||||
|
|
||||||
def file_list(self):
|
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, '*'))
|
return glob.glob(os.path.join(job_dir, '*'))
|
||||||
|
|
||||||
def log_path(self):
|
def log_path(self):
|
||||||
|
|||||||
Reference in New Issue
Block a user