def __init__(self, import_name, instance_path, config): """ Initialize app :param import_name: Declaring module nmae :type import_name: str :param instance_path: Application instance path :type instance_path: str :param config: Application configuration object :type config: dict """ # Init app self.app = OvercFlask(import_name, template_folder='templates', instance_path=instance_path, static_folder='static', static_url_path='/static' ) self.app.config.update(config) self.app.debug = config.get('DEBUG', False) # Init DB self.db_engine = init_db_engine(self.app.config['DATABASE']) self.db = init_db_session_for_flask(self.db_engine, self.app) # Globals class DignioAppCtxGlobals(_AppCtxGlobals): """ Flask `g` overrides """ app = self db = self.db self.app.app_ctx_globals_class = DignioAppCtxGlobals # Blueprints from .bps import api from .bps import ui self.app.register_blueprint(api.bp, url_prefix='/api') self.app.register_blueprint(ui.bp, url_prefix='/ui')
def supervise_loop(app): """ Supervisor main loop which performs background actions :param app: Application :type app: OvercApplication """ db_engine = init_db_engine(app.app.config['DATABASE']) Session = init_db_session(db_engine) lockfile = os.path.join(tempfile.gettempdir(), 'overc.lock') while True: sleep(3) # Locking with flock_timeout(lockfile, seconds=2): # Supervise ssn = Session() try: # TODO: receive notifications from the API for immediate supervision supervise_once(app, ssn) except Exception: logger.exception('Supervise loop error') finally: Session.remove()