def task_update(id): ''' 更新某个任务 :param id: :return: ''' if request.method == 'PUT': try: task = Task.objects(_id=id).first() task.pushTime = request.form['pushTime'] task.beginDate = request.form['beginDate'] task.endDate = request.form['endDate'] task.jobId = request.form['jobId'] task.command = request.form['command'] task.description = request.form['description'] task.updateTime = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") task.save() user = current_user log = Log(content='修改任务 ' + str(task.jobId) + ' 的信息', fromTask=user.userName, parameter='', createTime=datetime.datetime.now()) log.save() except Exception, e: return jsonify(dict(success=False)) return jsonify(dict(success=True))
def system_stop(): ''' 暂停系统 :return: ''' try: tasks = Task.objects(isRunning=1).all() for each in tasks: variable.scheduler.pause_job(str(each['jobId'])) log = Log(content='成功将任务 ' + each.jobId + ' 在队列中挂起', fromTask='system', parameter='', createTime=datetime.datetime.now()) log.save() each.isRunning = TASK_HANG each.save() # 系统状态改变 system = System.objects(key='systemState').first() system.value = SYSTEM_STOP system.save() variable.systemState = 0 user = current_user log = Log(content='成功关闭系统', fromTask=user.userName, parameter='', createTime=datetime.datetime.now()) log.save() except Exception, e: print e
def system_start(): ''' 启动系统 :return: ''' try: if variable.scheduler.running != True: variable.scheduler.init_app(app) variable.scheduler.start() else: tasks = Task.objects(isRunning=2).all() for each in tasks: variable.scheduler.resume_job(str(each['jobId'])) log = Log(content='成功将任务 ' + each.jobId + ' 重新启动', fromTask='system', parameter='', createTime=datetime.datetime.now()) log.save() each.isRunning = 1 each.save() # 系统状态改变 system = System.objects(key='systemState').first() system.value = SYSTEM_RUNNING system.save() user = current_user log = Log(content='成功启动系统', fromTask=user.userName, parameter='', createTime=datetime.datetime.now()) log.save() except Exception, e: print e
def task_delete(id): ''' 删除某个任务 :param id: :return: ''' try: task = Task.objects(_id=id).first() user = current_user log = Log(content='删除编号为 ' + str(task.jobId) + ' 的任务', fromTask=user.userName, parameter='', createTime=datetime.datetime.now()) log.save() if task.isRunning == TASK_RUNNING: variable.scheduler.delete_job(str(task['jobId'])) Task.objects(_id=id).delete() except Exception, e: return jsonify(dict(success=False))
def task_getInfo(id): ''' 获得某个任务的信息 :param id: :return: ''' try: task = Task.objects(_id=id).first() taskDict = task.to_dict() taskDict["_id"] = str(taskDict["_id"]) return jsonify(taskDict) except Exception, e: return jsonify(dict(success=False))
def task_show_search(): ''' 按照jobId搜索任务 :return: ''' try: args = request.args jobId = args.get('jobId', '') page = int(args.get('page', 1)) paginate = Task.objects(jobId__contains=jobId).paginate(page=page, per_page=10) system = System.objects(key='systemState').first().to_dict()['value'] return render_template('taskManage/taskManage.html', paginate=paginate, systemState=system) except Exception, e: return e
def delete_task(): try: date = str(datetime.datetime.now().strftime("%Y-%m-%d")) taskList = Task.objects(endDate__lt=date, isRunning=1).all() if taskList: for each in taskList: scheduler.delete_job(str(each['jobId'])) each.isRunning = 0 each.save() add_log('成功将任务 ' + each.jobId + ' 从任务队列中踢出', 'system', '') except Exception,e: add_log('delete_task出现异常: ' + e.message, 'system', '')
def add_task(): try: date = str(datetime.datetime.now().strftime("%Y-%m-%d")) taskList = Task.objects(beginDate__lte=date, endDate__gte=date, isRunning=0).all() if taskList: for each in taskList: exec(str(each.command)) each.isRunning = 1 each.save() add_log('成功将任务 ' + each.jobId + ' 添加到任务队列中', 'system', '') except Exception,e: add_log('add_task出现异常: ' + e.message, 'system', '')
def task_stop(id): ''' 关闭某个任务 :param id: :return: ''' try: system = System.objects(key='systemState').first().to_dict()['value'] if (system == SYSTEM_RUNNING): task = Task.objects(_id=id).first() variable.scheduler.pause_job(str(task['jobId'])) task.isRunning = TASK_HANG task.save() user = current_user log = Log(content='暂停编号为 ' + str(task.jobId) + ' 的任务', fromTask=user.userName, parameter='', createTime=datetime.datetime.now()) log.save() else: return jsonify(dict(success=False)) except Exception, e: return jsonify(dict(success=False))
def push_test(id): ''' 测试功能 :param id: :return: ''' if request.method == 'POST': try: task = Task.objects(_id=id).first() # 构造字符串 command = str(task.command) split = command.split('args') command = split[0] argCommand = split[1] split = command.split(',', 1) command = split[1] command = "scheduler.add_job('test1'," + command date = datetime.datetime.now() + datetime.timedelta(seconds=5) date = date.strftime("%Y-%m-%d %H:%M:%S") # 拼接新的command-trigger部分 timeGroup = re.search(r" (\d*):(\d*):(\d*)", date) args = re.search(r"=\((.*),(.*),(.*)\),", argCommand) date = datetime.datetime.now() + datetime.timedelta(days=1) date = date.strftime("%Y-%m-%d %H:%M:%S") dayGroup = re.search(r"(\d*)-(\d*)-(\d*)", date) dayGroup = dayGroup.group(1) + '-' + dayGroup.group(2) + '-' + dayGroup.group(3) reTrigger = "args=(" \ + args.group(1) \ + ",'test1','" \ + request.form["openid"] + "')," \ + "trigger={'type':'cron','start_date':'2016-08-24','hour':" \ + timeGroup.group(1) \ + ",'minute':" \ + timeGroup.group(2) \ + ",'second':" \ + timeGroup.group(3) \ + ",'end_date':'" + dayGroup + "'})" command = command + reTrigger command,timeGroup,dayGroup = splitJoinCommand(task.command,request.form["openid"]) # 新建测试任务 newTask = Task( pushTime=str(timeGroup.group(1)) + ':' + str(timeGroup.group(2)) + ':' + str(timeGroup.group(3)), beginDate='2016-08-24', endDate=dayGroup, jobId='test1', command=command, description='测试推送任务' + id, updateTime=datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"), isRunning=0, isTest=1) newTask.save() print "start" time.sleep(7) user = current_user log = Log(content='成功进行推送测试', fromTask=user.userName, parameter='', createTime=datetime.datetime.now()) log.save() return jsonify(dict(message=0)) except Exception, e: user = current_user log = Log(content='进行推送测试失败,异常:' + e.message, fromTask=user.userName, parameter='', createTime=datetime.datetime.now()) log.save() return jsonify(dict(message=1))