Simple Linux Panel
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
mdserver-web/web/admin/task/__init__.py

114 lines
3.5 KiB

7 months ago
# coding:utf-8
# ---------------------------------------------------------------------------------
# MW-Linux面板
# ---------------------------------------------------------------------------------
# copyright (c) 2018-∞(https://github.com/midoks/mdserver-web) All rights reserved.
# ---------------------------------------------------------------------------------
# Author: midoks <midoks@163.com>
# ---------------------------------------------------------------------------------
from flask import Blueprint, render_template
6 months ago
from flask import request
from admin import model
from admin.model import db,Tasks
6 months ago
from admin.user_login_check import panel_login_required
6 months ago
import core.mw as mw
6 months ago
import utils.task as MwTasks
7 months ago
blueprint = Blueprint('task', __name__, url_prefix='/task', template_folder='../../templates/default')
7 months ago
7 months ago
@blueprint.route('/count', endpoint='task_count')
6 months ago
@panel_login_required
7 months ago
def task_count():
6 months ago
return str(model.getTaskUnexecutedCount())
@blueprint.route('/list', endpoint='list', methods=['POST'])
6 months ago
@panel_login_required
6 months ago
def list():
p = request.form.get('p', '1')
limit = request.form.get('limit', '10').strip()
search = request.form.get('search', '').strip()
count = Tasks.query.filter_by().count()
pagination = Tasks.query.filter_by().order_by(Tasks.id.desc()).paginate(page=int(p), per_page=int(limit))
rows = []
for item in pagination.items:
t = {}
t['id'] = item.id
t['name'] = item.name
t['type'] = item.type
t['cmd'] = item.cmd
t['start'] = item.start
t['end'] = item.end
t['status'] = item.status
t['add_time'] = item.add_time
rows.append(t)
data = {}
data['data'] = rows
data['page'] = mw.getPage({'count':count,'tojs':'remind','p':p})
return data
@blueprint.route('/get_exec_log', endpoint='get_exec_log', methods=['POST'])
6 months ago
@panel_login_required
6 months ago
def get_exec_log():
file = mw.getPanelTaskLog()
return mw.getLastLine(file, 100)
@blueprint.route('/get_task_speed', endpoint='get_task_speed', methods=['POST'])
6 months ago
@panel_login_required
6 months ago
def get_task_speed():
count = model.getTaskUnexecutedCount()
if count == 0:
return mw.returnData(False, '当前没有任务队列在执行-2!')
row = model.getTaskFirstByRun()
if row is None:
return mw.returnData(False, '当前没有任务队列在执行-3!')
task_logfile = mw.getPanelTaskLog()
data = {}
data['name'] = row['name']
data['cmd'] = row['cmd']
if row['type'] == 'download':
readLine = ""
for i in range(3):
try:
readLine = mw.readFile(task_logfile)
if len(readLine) > 10:
data['msg'] = json.loads(readLine)
data['isDownload'] = True
break
except Exception as e:
if i == 2:
model.setTaskStatus(row['id'],0)
return mw.returnData(False, '当前没有任务队列在执行-4:' + str(e))
6 months ago
time.sleep(0.5)
else:
data['msg'] = mw.getLastLine(task_logfile, 10)
data['isDownload'] = False
6 months ago
data['task'] = model.getTaskRunList()
6 months ago
return data
6 months ago
@blueprint.route('/remove_task', endpoint='remove_task', methods=['POST'])
@panel_login_required
def remove_task():
task_id = request.form.get('id', '')
if task_id == '':
return mw.returnData(False, '任务ID不能为空!')
return MwTasks.removeTask(task_id)
6 months ago