mirror of
https://github.com/blw1138/Zordon.git
synced 2025-12-17 16:58:12 +00:00
57 lines
1.8 KiB
Python
57 lines
1.8 KiB
Python
#!/usr/bin/env python3
|
|
import logging
|
|
import os
|
|
import socket
|
|
import threading
|
|
import time
|
|
import yaml
|
|
from lib.job_server import server
|
|
from lib.render_queue import RenderQueue
|
|
|
|
|
|
def start_server(background_thread=False):
|
|
def eval_loop(delay_sec=1):
|
|
while True:
|
|
RenderQueue.evaluate_queue()
|
|
time.sleep(delay_sec)
|
|
|
|
with open('config.yaml') as f:
|
|
config = yaml.load(f, Loader=yaml.FullLoader)
|
|
|
|
logging.basicConfig(format='%(asctime)s: %(levelname)s: %(module)s: %(message)s', datefmt='%d-%b-%y %H:%M:%S',
|
|
level=config.get('server_log_level', 'INFO').upper())
|
|
|
|
server.config['UPLOAD_FOLDER'] = os.path.expanduser(config['upload_folder'])
|
|
server.config['MAX_CONTENT_PATH'] = config['max_content_path']
|
|
|
|
# Get hostname and render clients
|
|
RenderQueue.host_name = socket.gethostname()
|
|
server.config['HOSTNAME'] = RenderQueue.host_name
|
|
if not RenderQueue.render_clients:
|
|
RenderQueue.render_clients = [RenderQueue.host_name]
|
|
|
|
# disable most Flask logging
|
|
flask_log = logging.getLogger('werkzeug')
|
|
flask_log.setLevel(config.get('flask_log_level', 'ERROR').upper())
|
|
|
|
# Set up the RenderQueue object
|
|
RenderQueue.load_state()
|
|
|
|
thread = threading.Thread(target=eval_loop, kwargs={'delay_sec': config.get('queue_eval_seconds', 1)}, daemon=True)
|
|
thread.start()
|
|
|
|
logging.info("Starting Zordon Render Server")
|
|
|
|
if background_thread:
|
|
server_thread = threading.Thread(
|
|
target=lambda: server.run(host='0.0.0.0', port=RenderQueue.port, debug=False, use_reloader=False))
|
|
server_thread.start()
|
|
server_thread.join()
|
|
else:
|
|
server.run(host='0.0.0.0', port=RenderQueue.port, debug=config.get('flask_debug_enable', False),
|
|
use_reloader=False)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
start_server()
|