import os import multiprocessing import logging import ModuleUpdate ModuleUpdate.requirements_files.add(os.path.join("WebHostLib", "requirements.txt")) ModuleUpdate.update() # in case app gets imported by something like gunicorn import Utils Utils.local_path.cached_path = os.path.dirname(__file__) from WebHostLib import app as raw_app from waitress import serve from WebHostLib.models import db from WebHostLib.autolauncher import autohost from WebHostLib.lttpsprites import update_sprites_lttp from WebHostLib.options import create as create_options_files configpath = os.path.abspath("config.yaml") def get_app(): app = raw_app if os.path.exists(configpath): import yaml app.config.from_file(configpath, yaml.safe_load) logging.info(f"Updated config from {configpath}") db.bind(**app.config["PONY"]) db.generate_mapping(create_tables=True) return app if __name__ == "__main__": multiprocessing.freeze_support() multiprocessing.set_start_method('spawn') logging.basicConfig(format='[%(asctime)s] %(message)s', level=logging.INFO) try: update_sprites_lttp() except Exception as e: logging.exception(e) logging.warning("Could not update LttP sprites.") app = get_app() create_options_files() if app.config["SELFLAUNCH"]: autohost(app.config) if app.config["SELFHOST"]: # using WSGI, you just want to run get_app() if app.config["DEBUG"]: autohost(app.config) app.run(debug=True, port=app.config["PORT"]) else: serve(app, port=app.config["PORT"], threads=app.config["WAITRESS_THREADS"])