Example #1
0
def task_create():
    '''
    创建新的任务
    :return:
    '''
    if request.method == 'POST':
        try:
            task = Task(pushTime=request.form['pushTime'],
                        beginDate=request.form['beginDate'],
                        endDate=request.form['endDate'],
                        jobId=request.form['jobId'],
                        command=request.form['command'],
                        description=request.form['description'],
                        updateTime=datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
                        isRunning=0,
                        isTest=0)
            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))
Example #2
0
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))
Example #3
0
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
Example #4
0
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
Example #5
0
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))
Example #6
0
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))
Example #7
0
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
Example #8
0
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',
                '')
Example #9
0
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',
                '')
Example #10
0
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))
Example #11
0
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))