コード例 #1
0
ファイル: __init__.py プロジェクト: baijum/py-overc
    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')
コード例 #2
0
ファイル: supervise.py プロジェクト: baijum/py-overc
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()