示例#1
0
文件: views.py 项目: advatar/thevault
    def load_schedules():
        """
        Load schedules from db to kronos scheduler.
        Starts the backup routine for an app module if we missed a schedule.
        """
        logger.debug("in load_schedules")
        modules = app.modules

        for app_name in modules.keys():
            if app_name in ["base", "account"]:
                continue
            logger.debug("loading schedule for %s", app_name)

            settings = get_settings(app_name)
            if not settings:
                continue

            logger.debug("%r", settings["schedule"])

            def callback(app_name):
                try:
                    url = "http://%s:%s/%s/backup" % (HOST, PORT, app_name)
                    progress = get_backup_progress(app_name)

                    if not progress:
                        urllib2.urlopen(url).read()
                except Exception, e:
                    logger.debug("%r", e)

            taskname = "%s" % (app_name)

            add_schedule(taskname, settings["schedule"], callback)
            logger.debug("schedule added")
            today = datetime.datetime.today()

            if not is_online():
                logger.debug("we are offline. skipping backup on boot")
                return make_response("schedule loaded")

            archive = get_recent_archive(app_name)
            if archive:
                logger.debug("there is an archive")
                try:
                    if not backup_is_on_schedule(today, archive.archived_at, settings["schedule"]):
                        logger.debug("we missed a backup schedule. starting backup")
                        KRON.add_single_task(callback, "backup_%s" % app_name, 1, "threaded", [app_name], None)
                    else:
                        logger.debug("we are on schedule")
                except Exception, e:
                    logger.debug("error: %r" % e)
示例#2
0
from flask import url_for, current_app
import urllib2
from settings import HOST, PORT, KRON
from myvault.helpers import get_logger, is_online

logger = get_logger()

def init_scheduler(app):   
    def load_schedules():
        try:
            url = "http://%s:%s/load_schedules" % (HOST, PORT,)
            urllib2.urlopen(url, timeout=1)
        except Exception, e:
            pass

    KRON.add_single_task(load_schedules, 'load_schedules', 3, 'threaded', None, None)


def reload_schedules():
    try:
        url = "http://%s:%s/reload_schedules" % (HOST, PORT,)
        urllib2.urlopen(url, timeout=1)
    except Exception, e:
        pass


def cancel_schedule(taskname):
    if taskname in KRON.tasks:
        try:
            KRON.cancel(KRON.tasks[taskname])
            del KRON.tasks[taskname]
示例#3
0
文件: views.py 项目: advatar/thevault
                return make_response("schedule loaded")

            archive = get_recent_archive(app_name)
            if archive:
                logger.debug("there is an archive")
                try:
                    if not backup_is_on_schedule(today, archive.archived_at, settings["schedule"]):
                        logger.debug("we missed a backup schedule. starting backup")
                        KRON.add_single_task(callback, "backup_%s" % app_name, 1, "threaded", [app_name], None)
                    else:
                        logger.debug("we are on schedule")
                except Exception, e:
                    logger.debug("error: %r" % e)
            else:
                logger.debug("no backup found. starting backup")
                KRON.add_single_task(callback, "backup_%s" % app_name, 1, "threaded", [app_name], None)

        return make_response("schedule loaded")

    @app.route("/reload_schedules")
    def reload_schedules():
        """
        Reload all schedules
        """
        logger.debug("in reload schedules")
        modules = app.modules

        def load_sked():
            try:
                url = "http://%s:%s/load_schedules" % (HOST, PORT)
                urllib2.urlopen(url, timeout=1)