定时任务(部分)
This commit is contained in:
@@ -1,42 +1,6 @@
|
||||
import datetime
|
||||
from flask import current_app
|
||||
|
||||
from applications.extensions import db
|
||||
from applications.extensions.init_apscheduler import scheduler
|
||||
from applications.models import Dept
|
||||
|
||||
|
||||
# @scheduler.task(
|
||||
# "interval",
|
||||
# id="job_sync",
|
||||
# seconds=10,
|
||||
# max_instances=1,
|
||||
# start_date="2000-01-01 12:19:00",
|
||||
# )
|
||||
# def task1():
|
||||
# # oh, do you need something from config?
|
||||
# with scheduler.app.app_context():
|
||||
# print(scheduler.app.config) # noqa: T001
|
||||
# address = "ces"
|
||||
# deptName = "测试"
|
||||
# email = "123@qq.com"
|
||||
# leader = "测试的"
|
||||
# parentId = "1"
|
||||
# phone = "123456"
|
||||
# sort = "5"
|
||||
# status = 1
|
||||
# dept = Dept(
|
||||
# parent_id=parentId,
|
||||
# dept_name=deptName,
|
||||
# sort=sort,
|
||||
# leader=leader,
|
||||
# phone=phone,
|
||||
# email=email,
|
||||
# status=status,
|
||||
# address=address
|
||||
# )
|
||||
# r = db.session.add(dept)
|
||||
# db.session.commit()
|
||||
task_list = ['task2', 'task3', 'task4']
|
||||
|
||||
|
||||
def task2(a, b):
|
||||
|
||||
@@ -9,28 +9,51 @@
|
||||
<div class="main-container">
|
||||
<div class="main-container">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">协议类型</label>
|
||||
<label class="layui-form-label">ID标识</label>
|
||||
<div class="layui-input-block">
|
||||
<select name="type" lay-verify="required" lay-search>
|
||||
<option value="http">http</option>
|
||||
<option value="https">https</option>
|
||||
</select>
|
||||
<input type="text" name="id" lay-verify="title" autocomplete="off" placeholder="请输入任务id"
|
||||
class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">名称</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="name" lay-verify="title" autocomplete="off" placeholder="请输入标题"
|
||||
<input type="text" name="name" lay-verify="title" autocomplete="off" placeholder="请输入名称"
|
||||
class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">查询间隔时间</label>
|
||||
<label class="layui-form-label">任务类型</label>
|
||||
<div class="layui-input-block">
|
||||
<select name="frequency" lay-verify="required" lay-search>
|
||||
{% for task in task_frequency_render %}
|
||||
<option value="{{ task.key }}">{{ task.value}}</option>
|
||||
<select name="type" lay-filter="type" lay-verify="required" lay-search>
|
||||
<option value="date">date 一次性指定固定时间,只执行一次</option>
|
||||
<option value="interval">interval 间隔调度,隔多长时间执行一次</option>
|
||||
<option value="cron">cron 指定相对时间执行</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">函数</label>
|
||||
<div class="layui-input-block">
|
||||
<select name="functions" lay-verify="required" lay-search>
|
||||
{% for task in task_list %}
|
||||
<option value="{{ task }}">{{ task }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item" id="datetimeItem">
|
||||
<label class="layui-form-label">固定时间</label>
|
||||
<div class="layui-input-block">
|
||||
<input name="datetime" type="text" class="layui-input" id="datetime">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item" style="display: none" id="timeItem">
|
||||
<label class="layui-form-label">时间</label>
|
||||
<div class="layui-input-block">
|
||||
<input name="time" type="text" class="layui-input" id="time">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</select>
|
||||
@@ -55,24 +78,57 @@
|
||||
{% include 'admin/common/footer.html' %}
|
||||
<script>
|
||||
layui.use(['form', 'jquery'], function () {
|
||||
|
||||
let form = layui.form
|
||||
let $ = layui.jquery
|
||||
var laydate = layui.laydate;
|
||||
|
||||
laydate.render({
|
||||
elem: '#datetime'
|
||||
, type: 'datetime'
|
||||
});
|
||||
laydate.render({
|
||||
elem: '#time'
|
||||
, type: 'time'
|
||||
});
|
||||
|
||||
|
||||
form.on('select(type)', function (data) {
|
||||
if (data.value === 'date') {
|
||||
$('#timeItem').hide()
|
||||
$('#datetimeItem').show()
|
||||
} else if (data.value === 'interval') {
|
||||
console.log('interval')
|
||||
$('#datetimeItem').hide()
|
||||
$('#timeItem').show()
|
||||
$('#timeItem').val('')
|
||||
|
||||
} else if (data.value === 'cron') {
|
||||
console.log('cron')
|
||||
$('#datetimeItem').hide()
|
||||
$('#timeItem').show()
|
||||
$('#timeItem').val('')
|
||||
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
|
||||
form.on('submit(role-save)', function (data) {
|
||||
$.ajax({
|
||||
url: '/task/save',
|
||||
url: '/admin/task/save',
|
||||
data: JSON.stringify(data.field),
|
||||
dataType: 'json',
|
||||
contentType: 'application/json',
|
||||
type: 'post',
|
||||
success: function (result) {
|
||||
if (result.success) {
|
||||
layer.msg(result.msg, { icon: 1, time: 1000 }, function () {
|
||||
layer.msg(result.msg, {icon: 1, time: 1000}, function () {
|
||||
parent.layer.close(parent.layer.getFrameIndex(window.name))//关闭当前页
|
||||
parent.layui.table.reload('role-table')
|
||||
})
|
||||
} else {
|
||||
layer.msg(result.msg, { icon: 2, time: 1000 })
|
||||
layer.msg(result.msg, {icon: 2, time: 1000})
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
@@ -1,29 +1,16 @@
|
||||
from flask import Blueprint, request, render_template
|
||||
from flask_apscheduler.utils import job_to_dict
|
||||
|
||||
from applications.common.tasks.tasks import task2, task3, task4
|
||||
from applications.common.tasks import tasks
|
||||
from applications.common.tasks.tasks import task_list
|
||||
from applications.common.utils.http import table_api, fail_api, success_api
|
||||
from applications.extensions.init_apscheduler import scheduler
|
||||
|
||||
admin_task = Blueprint('adminTask', __name__, url_prefix='/admin/task')
|
||||
|
||||
|
||||
# 暂停任务
|
||||
# scheduler.pause_job('third')
|
||||
# 恢复任务
|
||||
# time.sleep(10)
|
||||
# scheduler.resume_job('third')
|
||||
# 删除任务
|
||||
# scheduler.remove_job('first')
|
||||
|
||||
|
||||
@admin_task.route('/add_job', methods=['GET'])
|
||||
def add_task():
|
||||
tasks = {
|
||||
"task2": task2,
|
||||
"task3":task3,
|
||||
"task4":task4
|
||||
}
|
||||
scheduler.add_job(func=tasks.get(), id='4', args=(1, 1), trigger='interval', seconds=3,
|
||||
replace_existing=True)
|
||||
return '6'
|
||||
@@ -40,22 +27,61 @@ def get_task(): # 获取
|
||||
jobs_list = []
|
||||
for job in jobs:
|
||||
jobs_list.append(job_to_dict(job))
|
||||
return table_api(data=jobs_list)
|
||||
return table_api(data=jobs_list, count=len(jobs_list))
|
||||
|
||||
|
||||
# 增加
|
||||
@admin_task.get('/add')
|
||||
def add():
|
||||
return render_template('admin/task/add.html')
|
||||
return render_template('admin/task/add.html', task_list=task_list)
|
||||
|
||||
|
||||
@admin_task.post('/save')
|
||||
def save():
|
||||
_id = request.json.get("id")
|
||||
name = request.json.get("id")
|
||||
type = request.json.get("type")
|
||||
functions = request.json.get("functions")
|
||||
datetime = request.json.get("datetime")
|
||||
time = request.json.get("time")
|
||||
if not hasattr(tasks, functions):
|
||||
return fail_api()
|
||||
if type == 'date':
|
||||
scheduler.add_job(
|
||||
func=getattr(tasks, functions),
|
||||
id=_id,
|
||||
name=name,
|
||||
args=(1, 1),
|
||||
trigger=type,
|
||||
run_date=datetime,
|
||||
replace_existing=True)
|
||||
elif type == 'interval':
|
||||
scheduler.add_job(
|
||||
func=getattr(tasks, functions),
|
||||
id=_id,
|
||||
name=name,
|
||||
args=(1, 1),
|
||||
trigger=type,
|
||||
replace_existing=True)
|
||||
elif type == 'cron':
|
||||
scheduler.add_job(
|
||||
func=getattr(tasks, functions),
|
||||
id=_id,
|
||||
name=name,
|
||||
args=(1, 1),
|
||||
trigger=type,
|
||||
replace_existing=True)
|
||||
|
||||
return success_api()
|
||||
|
||||
|
||||
# 恢复
|
||||
@admin_task.put('/enable')
|
||||
def enable():
|
||||
id = request.json.get('id')
|
||||
_id = request.json.get('id')
|
||||
# print(id)
|
||||
if id:
|
||||
scheduler.resume_job(str(id))
|
||||
if _id:
|
||||
scheduler.resume_job(str(_id))
|
||||
return success_api(msg="启动成功")
|
||||
return fail_api(msg="数据错误")
|
||||
|
||||
@@ -75,8 +101,6 @@ def remove_job(_id): # 移除
|
||||
scheduler.remove_job(str(_id))
|
||||
return success_api(msg="删除成功")
|
||||
|
||||
|
||||
|
||||
# scheduler.add_job(func=task1, id='2', args=(1, 1), trigger='cron', day_of_week='0-6', hour=18, minute=24,
|
||||
# second=10, replace_existing=True)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user