Beispiel #1
0
def evalaute_script_cron_triggers(tick, interval):
    second = tick * interval / 1000

    for script in session.query(ScriptModel).all():
        s = Script(script.uid)

        if script.enabled:

            for trigger in script.triggers:

                if trigger["type"] == "cron":
                    # Evaluate cron expression
                    try:
                        cron = cronex.CronExpression(
                            trigger["options"]["expression"])

                        time = tuple(list(datetime.now().timetuple())[:5])

                        if cron.check_trigger(time):
                            # Execute script in seperate thread, such that the loop is not affected
                            dispatch_task(
                                "execute_script",
                                {"script_uid": script.uid},
                                task_priority="NOW",
                            )
                    except (ValueError):
                        logger.error("CRON expression yielded error: {}",
                                     trigger["options"]["expression"])
Beispiel #2
0
    def post(self, uid):
        """Create new script. This is a slow function."""
        parser = reqparse.RequestParser()
        parser.add_argument("name")
        args = parser.parse_args()

        dispatch_task("create_script", {"name": args["name"]}, "NOW")
        return {"uid": for_uid(args["name"])}, 200
Beispiel #3
0
def run(arguments, event):
    for script in get_all_scripts():
        for trigger in script["triggers"]:
            if trigger["type"] == "on_startup":
                dispatch_task(
                    "execute_script",
                    {"script_uid": script["uid"]},
                    task_priority="NOW",
                )

    return
Beispiel #4
0
def main():
    """Start main loop."""
    logger.info("Starting main loop")
    starttime = time.time()
    i = 1

    dispatch_task("trigger_on_startup")
    dispatch_task("create_default_settings")

    while IS_RUNNING:
        # execute_next_task()
        interval_trigger.tick()

        # Sleep for exactly one second, taking drift and execution time into account
        time.sleep(1 - ((time.time() - starttime) % 1))
        i += 1

    logger.info("Exiting main loop")
Beispiel #5
0
def evalaute_script_interval_triggers(tick, interval):
    second = tick * interval / 1000

    for script in session.query(ScriptModel).all():
        s = Script(script.uid)

        if script.enabled:

            for trigger in script.triggers:

                if trigger["type"] == "interval":
                    if second % int(trigger["options"]["interval"]) == 0:
                        dispatch_task(
                            "execute_script",
                            {"script_uid": script.uid},
                            task_priority="NOW",
                        )

        # Check that the script is enabled to run and that the interval is above 0
        """if script.interval != 0 and script.enabled:
Beispiel #6
0
 def delete(self):
     """Delete script."""
     dispatch_task("delete_script", {"uid": self.uid}, task_priority="NOW")
Beispiel #7
0
 def execute(self):
     dispatch_task("execute_script", {"script_uid": self.uid},
                   task_priority="NOW")
Beispiel #8
0
 def install_requirements(self):
     """Install requirements.txt"""
     dispatch_task("install_pip_requirements", {"script_uid": self.uid},
                   task_priority="NOW")
Beispiel #9
0
def prune_script_logs():
    dispatch_task("prune_logs", {})