def cron_status(): datas = request.values.to_dict() api_access_token = configs('api_access_token') task_name = datas.get('task_name') access_token = datas.get('access_token') status = datas.get('status') if status: try: if int(status) not in [0, 1]: return api_err_return(msg='status只能0或者1') except: return api_err_return(msg='status只能0或者1') if api_access_token: if not access_token: return api_err_return(msg='access_token不能为空') if api_access_token != access_token: return api_err_return(msg='access_token错误') if not task_name: return api_err_return(msg='任务名称不能为空') ci = CronInfos.query.filter(CronInfos.task_name == task_name).first() if not ci: return api_err_return(msg='任务不存在') if ci.status == -1: return api_err_return(msg='任务已结束,不能再操作,只能重新更新') if not status: #0停止1运行中 if ci.status == 0: #开启 ci.status = 1 scheduler.resume_job('cron_%s' % ci.id) else: ci.status = 0 #关闭 scheduler.pause_job('cron_%s' % ci.id) else: if int(status) == 0 and ci.status != 0: ci.status = 0 # 关闭 scheduler.pause_job('cron_%s' % ci.id) if int(status) == 1 and ci.status != 1: ci.status = 1 scheduler.resume_job('cron_%s' % ci.id) db.session.add(ci) db.session.commit() return 'ok'
def change_task_status(status, id): """ 改变任务状态 (('add', '启动'), ('pause', '暂停'), ('run', '运行'), ('stop', '停止')) """ # 验证任务是否存在 task = Task.objects(id=id).first() if not task: flash('任务不存在') else: # 验证状态 if status not in ('add', 'pause', 'run', 'stop'): flash('无效任务状态[' + status + ']') return redirect(url_for('core.tasks')) if status == 'add': add_job(task) else: job = scheduler.get_job(id) if not job: flash('任务未启动') return status if status == 'run': scheduler.resume_job(id) elif status == 'pause': scheduler.pause_job(id) elif status == 'stop': scheduler.remove_job(id) flash('操作成功') return status
def resume_task(): data = request.json ids = data.get('id') _data = Task.query.filter_by(id=ids).first() _data.status = '启动' scheduler.resume_job(str(ids)) # 添加任务 db.session.commit() return jsonify({'msg': '恢复成功', 'status': 1})
def resume_task(): """ 恢复任务 """ data = request.json current_app.logger.info('url:{} ,method:{},请求参数:{}'.format(request.url, request.method, data)) ids = data.get('id') _data = Task.query.filter_by(id=ids).first() _data.status = '启动' scheduler.resume_job(str(ids)) # 添加任务 db.session.commit() return jsonify({'msg': '恢复成功', 'status': 1})
def resume_next_job(job_id_prefix, current_job_id=None): """ Pause current job(if exists) and resume next job """ from app import scheduler if current_job_id is not None: scheduler.pause_job(current_job_id) this_kind_of_job_ids = [ job.id for job in scheduler.get_jobs() if job.id.startswith(job_id_prefix) ] next_job_id = reduce((lambda x, y: x if PREVIOUS_RUN_TIME.get(x, 0) < PREVIOUS_RUN_TIME.get(y, 0) else y), this_kind_of_job_ids) scheduler.resume_job(next_job_id) PREVIOUS_RUN_TIME[next_job_id] = time.time()
def get(self,id): task = Task.query.filter_by(id=id).first() try: scheduler.resume_job(str(id)) task.yunxing_status=u'启动' db.session.commit() flash(u'定时任务恢复成功!') return redirect(url_for('home.timingtask')) except: task.yunxing_status = u'创建' db.session.commit() flash(u'定时任务恢复失败!已经为您初始化') return redirect(url_for('home.timingtask'))
def update_status(): id = request.args.get('id') cif = CronInfos.query.get(id) if not cif: return web_api_return(code=1, msg='项目不存在', url='/cron_list') status = cif.status _status = 0 if status == 0: _status = 1 scheduler.resume_job('cron_%s' % cif.id) else: scheduler.pause_job('cron_%s' % cif.id) cif.status = _status db.session.add(cif) db.session.commit() return web_api_return(code=0, msg='操作成功')
def start_task(): """ 启动已经暂停的任务 """ if not request.content_type == 'application/json': return render_response(-1, msg="Content-type must be application/json.") userdata = request.json.get('userdata') task_ids = request.json.get('task_id') if not task_ids: return render_response(-1, msg="task_id is required.") if type(task_ids) == str: task_ids = [task_ids] for task_id in task_ids: task = Task.query.get(task_id) if not task: msg = "task not found." return render_response(code=-1, msg=msg, userdata=userdata) task_helper.assign_task(task.id) try: scheduler.resume_job(task_id) except Exception as e: logger.error(e) msg = "Startup failed. task may be already finished." # return render_response(code=-1, userdata=userdata, msg=msg) task.task_status = 1 # 任务状态1表示已启动 try: db.session.add(task) db.session.commit() except Exception as e: logger.error(e) return render_response(code=-1, msg="database error.", userdata=userdata) return render_response(code=0, userdata=userdata)
def resume_job(self): scheduler.resume_job(self.scheduler_id)