def execute_lambda(self, task, event, *args, **kwargs): conn = get_connection() task = conn.query(Task).filter(Task.task_id == task["task_id"])[0].to_json() res = run_lambda(task, event) if task['callback']: event['result'] = res task = conn.query(Task).filter(Task.task_id == task['callback'])[0].to_json() execute_lambda.apply_async(kwargs=dict(task=task, event=event)) return res
def scan_tasks(self, *args, **kwargs): conn = get_connection() next_run = 0 for task in conn.query(Task).filter(Task.schedule != None): if task.last_run is None or task.next_run is None or task.next_run < int(mktime(datetime.utcnow().timetuple())): next_run = calculate_next_run(task) task.next_run = next_run conn.commit() execute_lambda.apply_async(kwargs=dict(task=task.to_json(), event=loads(task.func_args))) return "Schedules all what is required", int(mktime(datetime.utcnow().timetuple())), next_run