def fetch_job(self): ''' 获取超过当前时间戳的需要触发的一批任务 :return: ''' tasks = TaskModel.query_task_to_trigger() if tasks: TaskModel.execute( 'update task set exec_status = 1 where trigger_time<{} and exec_status = 0' .format(int(time.time()))) return tasks
def update_trigger(self, job): ''' 根据job的类型,计算更新该job的下个触发点 :param job: :return: ''' # logger.warning('update trigger for job: {}'.format(str(job))) now = int(time.time()) if job.get('interval_type') == 1: TaskModel.execute( 'update task set exec_status=0, trigger_time={}, update_at={} where id = {}' .format(0, now, job.get('id'))) elif job.get('interval_type') == 2: TaskModel.execute( 'update task set exec_status=3, update_at={} where id = {}'. format(now, job.get('id'))) elif job.get('interval_type') == 3: TaskModel.execute( 'update task set exec_status=0, trigger_time={}, update_at={} where id = {}' .format(now + job.get('time_detail', 0), now, job.get('id')))