"""Run the application""" import os import sys from logging import getLogger, StreamHandler from flask import Flask from qc_app import create_app from qc_app.check_connections import check_db, check_redis def setup_logging(appl: Flask) -> Flask: """Setup appropriate logging paradigm depending on environment.""" # https://datatracker.ietf.org/doc/html/draft-coar-cgi-v11-03#section-4.1.17 # https://wsgi.readthedocs.io/en/latest/proposals-2.0.html#making-some-keys-required # https://peps.python.org/pep-3333/#id4 software, *_version_and_comments = os.environ.get( "SERVER_SOFTWARE", "").split('/') if bool(software): gunicorn_logger = getLogger("gunicorn.error") appl.logger.handlers = gunicorn_logger.handlers appl.logger.setLevel(gunicorn_logger.level)#pylint: disable=[no-member] else: loglevel = appl.config["LOG_LEVEL"].upper() # Maybe call `logging.dictConfig(…)` here instead of all this stuff below handler_stderr = StreamHandler(stream=sys.stderr) appl.logger.addHandler(handler_stderr) rootlogger = getLogger() rootlogger.addHandler(handler_stderr) rootlogger.setLevel(loglevel) appl.logger.setLevel(loglevel) return appl def check_and_build_app() -> Flask: """Setup the application for running.""" # Setup the app appl = create_app() # Check connections check_db(appl.config["SQL_URI"]) check_redis(appl.config["REDIS_URL"]) return setup_logging(appl) app = check_and_build_app() if __name__ == "__main__": # Run the app app.run()