#!/usr/bin/env python # -*- coding: utf-8 -*- # Copyright (c) 2019. Tobias Kurze import logging import ssl import sys import threading from jinja2.exceptions import TemplateNotFound from backend import app, db from backend.cron import get_default_scheduler, add_default_jobs, async_permanent_cron_recorder_checker from backend.models import * from backend.models import room_model, recorder_model, RecorderCommand, Recorder from backend.recorder_adapters import get_defined_recorder_adapters from backend.tools.model_updater import update_recorder_models_database, create_default_recorders, add_test_recorder from backend.websocket.base import WebSocketBase def _start_initial_recorder_state_update(run_in_thread=True): if run_in_thread: thread = threading.Thread(target=async_permanent_cron_recorder_checker.check_object_state, args=()) thread.start() else: async_permanent_cron_recorder_checker.check_object_state() # initial check of all recorders def _create_and_start_default_scheduler(): print("Starting Scheduler") scheduler = get_default_scheduler() add_default_jobs(scheduler) scheduler.start() return scheduler def main(): logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s') # db.drop_all() # db.create_all() # Recorder() room_model.pre_fill_table() update_recorder_models_database(drop=False) create_default_recorders() add_test_recorder() print(app.config.get("SERVER_NAME", None)) server_name = app.config.get("SERVER_NAME", None) if server_name is not None and "ubkaps154.ubka.uni-karlsruhe.de" in server_name: try: context = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2) context.load_cert_chain('cert.pem', 'key.pem') app.run(debug=True, ssl_context=context, threaded=True) except FileNotFoundError: app.run(debug=True, threaded=True) try: db.create_all() except Exception as e: logging.critical(e) scheduler = _create_and_start_default_scheduler() #_start_initial_recorder_state_update(run_in_thread=False) wsb = WebSocketBase() print("running websocket...(replaces normal app.run()") wsb.start_websocket(debug=True) # print("running web app...") # app.run(debug=True, host="0.0.0.0", threaded=True) wsb.send_test_msg() while True: user_in = input("Type >exit< to quit.") if user_in == "exit" or user_in == ">exit<": break scheduler.shutdown() sys.exit(0) if __name__ == '__main__': main()