Ejemplo n.º 1
0
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()
Ejemplo n.º 2
0
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
    })