def create_associated_triggers(db_workbook): if not db_workbook['definition']: return workbook = parser.get_workbook(db_workbook['definition']) triggers = workbook.get_triggers() # Prepare all triggers data in advance to make db transaction shorter. db_triggers = [] for e in triggers: pattern = e['parameters']['cron-pattern'] next_time = _get_next_execution_time(pattern, datetime.now()) db_triggers.append({ "name": e['name'], "pattern": pattern, "next_execution_time": next_time, "workbook_name": db_workbook['name'] }) db_api.start_tx() try: for e in db_triggers: db_api.trigger_create(e) db_api.commit_tx() finally: db_api.end_tx()
def create_trigger(name, pattern, workbook_name, start_time=None): if not start_time: start_time = datetime.now() return db_api.trigger_create({ "name": name, "pattern": pattern, "next_execution_time": _get_next_execution_time(pattern, start_time), "workbook_name": workbook_name })