From cac816606ac023574cdb0cfc873bd7512f31d9ac Mon Sep 17 00:00:00 2001 From: Brian Bjarke Jensen Date: Fri, 23 Feb 2024 23:29:42 +0100 Subject: [PATCH] updated auto init of app --- src/main.py | 117 +++++++++++++++------------------------------------- 1 file changed, 33 insertions(+), 84 deletions(-) diff --git a/src/main.py b/src/main.py index 7b0b5ea..024b1b5 100644 --- a/src/main.py +++ b/src/main.py @@ -1,99 +1,48 @@ import logging -from discord_logging.handler import DiscordHandler from dotenv import load_dotenv -from configparser import ConfigParser from pathlib import Path import logging import os -from src.web import server +# prepare optional local setup +env_path = Path(__file__).parent.parent / "local.env" +load_dotenv(env_path) -# load default values -config = ConfigParser() -config.read(Path(__file__).parent / 'defaults.ini') -LOGGER_LEVEL = config.get('main', 'logger_level') -DISCORD_SERVICE_NAME = config.get('discord', 'service_name') -DISCORD_LOGGER_LEVEL = config.get('discord', 'logger_level') - - -def setup_logging( - discord_webhook_url: str, - discord_service_name: str = DISCORD_SERVICE_NAME, - discord_logger_level: str = DISCORD_LOGGER_LEVEL, - logger_level: str = LOGGER_LEVEL, -) -> None: - # setup stream handler - fmt = ( - '%(asctime)s | ' - '%(levelname)s | ' - '%(filename)s | ' - '%(funcName)s | ' - '%(message)s' +# ensure env vars set +necesasary_var_list = { + "MONGO_HOST", + "MONGO_DB", + "MONGO_COLLECTION", + "MONGO_USER", + "MONGO_PASSWORD", +} +for env_var in necesasary_var_list: + # ensure env var set + assert ( + env_var in os.environ + ), ( + f"environment variable not set: {env_var}" ) - datefmt = '%Y-%m-%d %H:%M:%S' - level = getattr(logging, logger_level.upper()) - logging.basicConfig(format=fmt, datefmt=datefmt, level=level) - logger = logging.getLogger() - # add discord handler - discord_handler = DiscordHandler( - service_name=discord_service_name, - webhook_url=discord_webhook_url, - ) - discord_handler.setFormatter(logging.Formatter('%(message)s')) - level = getattr(logging, discord_logger_level.upper()) - discord_handler.setLevel(level=level) - logger.addHandler(discord_handler) - logging.debug('finished') +# setup logging stream handler +fmt = ( + '%(asctime)s | ' + '%(levelname)s | ' + '%(filename)s | ' + '%(funcName)s | ' + '%(message)s' +) +datefmt = '%Y-%m-%d %H:%M:%S' +logging.basicConfig(format=fmt, datefmt=datefmt, level=logging.INFO) -def initialise_app() -> None: - """ - Ensure all necessary environment variables are provided - """ - # load env vars - load_dotenv() - # ensure env vars set - necesasary_var_map = { - 'LOGGER_LEVEL': False, - 'DISCORD_SERVICE_NAME': False, - 'DISCORD_WEBHOOK_URL': True, - 'DISCORD_LOGGER_LEVEL': False, - 'DATABASE_HOST': True, - 'DATABASE_PORT': True, - 'DATABASE_ENGINE': True, - 'DATABASE_DATABASE': True, - 'DATABASE_USERNAME': True, - 'DATABASE_PASSWORD': True, - } - for env_var, must_be_set in necesasary_var_map.items(): - if must_be_set: - # ensure env var set - assert ( - env_var in os.environ - ), ( - f"environment variable not set: {env_var}" - ) - # set variable from env var - locals()[env_var.lower()] = os.getenv(key=env_var) - else: - # ensure default value set - assert env_var in globals(), f"default variable not set: {env_var}" - # set variable from env var with backup from default value - locals()[env_var.lower()] = os.getenv( - key=env_var, - default=globals()[env_var] - ) - setup_logging( - discord_webhook_url=locals()['discord_webhook_url'], - discord_service_name=locals()['discord_service_name'], - discord_logger_level=locals()['discord_logger_level'], - logger_level=locals()['logger_level'], - ) - logging.debug('finished') +logging.info("initialized app") +from src.web import app +server = app.server if __name__ == "__main__": - from src.web import app - # initialise_app() + # prepare local env vars + os.environ["MONGO_HOST"] = "localhost" + # run app app.run(debug=True) logging.info("started app") \ No newline at end of file