定时任务(部分)
This commit is contained in:
@@ -1,42 +1,6 @@
|
|||||||
import datetime
|
import datetime
|
||||||
from flask import current_app
|
|
||||||
|
|
||||||
from applications.extensions import db
|
task_list = ['task2', 'task3', 'task4']
|
||||||
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()
|
|
||||||
|
|
||||||
|
|
||||||
def task2(a, b):
|
def task2(a, b):
|
||||||
|
|||||||
@@ -9,28 +9,51 @@
|
|||||||
<div class="main-container">
|
<div class="main-container">
|
||||||
<div class="main-container">
|
<div class="main-container">
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label">协议类型</label>
|
<label class="layui-form-label">ID标识</label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<select name="type" lay-verify="required" lay-search>
|
<input type="text" name="id" lay-verify="title" autocomplete="off" placeholder="请输入任务id"
|
||||||
<option value="http">http</option>
|
class="layui-input">
|
||||||
<option value="https">https</option>
|
|
||||||
</select>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label">名称</label>
|
<label class="layui-form-label">名称</label>
|
||||||
<div class="layui-input-block">
|
<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">
|
class="layui-input">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label">查询间隔时间</label>
|
<label class="layui-form-label">任务类型</label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<select name="frequency" lay-verify="required" lay-search>
|
<select name="type" lay-filter="type" lay-verify="required" lay-search>
|
||||||
{% for task in task_frequency_render %}
|
<option value="date">date 一次性指定固定时间,只执行一次</option>
|
||||||
<option value="{{ task.key }}">{{ task.value}}</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 %}
|
{% 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>
|
</select>
|
||||||
@@ -55,24 +78,57 @@
|
|||||||
{% include 'admin/common/footer.html' %}
|
{% include 'admin/common/footer.html' %}
|
||||||
<script>
|
<script>
|
||||||
layui.use(['form', 'jquery'], function () {
|
layui.use(['form', 'jquery'], function () {
|
||||||
|
|
||||||
let form = layui.form
|
let form = layui.form
|
||||||
let $ = layui.jquery
|
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) {
|
form.on('submit(role-save)', function (data) {
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: '/task/save',
|
url: '/admin/task/save',
|
||||||
data: JSON.stringify(data.field),
|
data: JSON.stringify(data.field),
|
||||||
dataType: 'json',
|
dataType: 'json',
|
||||||
contentType: 'application/json',
|
contentType: 'application/json',
|
||||||
type: 'post',
|
type: 'post',
|
||||||
success: function (result) {
|
success: function (result) {
|
||||||
if (result.success) {
|
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.layer.close(parent.layer.getFrameIndex(window.name))//关闭当前页
|
||||||
parent.layui.table.reload('role-table')
|
parent.layui.table.reload('role-table')
|
||||||
})
|
})
|
||||||
} else {
|
} 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 import Blueprint, request, render_template
|
||||||
from flask_apscheduler.utils import job_to_dict
|
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.common.utils.http import table_api, fail_api, success_api
|
||||||
from applications.extensions.init_apscheduler import scheduler
|
from applications.extensions.init_apscheduler import scheduler
|
||||||
|
|
||||||
admin_task = Blueprint('adminTask', __name__, url_prefix='/admin/task')
|
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'])
|
@admin_task.route('/add_job', methods=['GET'])
|
||||||
def add_task():
|
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,
|
scheduler.add_job(func=tasks.get(), id='4', args=(1, 1), trigger='interval', seconds=3,
|
||||||
replace_existing=True)
|
replace_existing=True)
|
||||||
return '6'
|
return '6'
|
||||||
@@ -40,22 +27,61 @@ def get_task(): # 获取
|
|||||||
jobs_list = []
|
jobs_list = []
|
||||||
for job in jobs:
|
for job in jobs:
|
||||||
jobs_list.append(job_to_dict(job))
|
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')
|
@admin_task.get('/add')
|
||||||
def 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')
|
@admin_task.put('/enable')
|
||||||
def enable():
|
def enable():
|
||||||
id = request.json.get('id')
|
_id = request.json.get('id')
|
||||||
# print(id)
|
# print(id)
|
||||||
if id:
|
if _id:
|
||||||
scheduler.resume_job(str(id))
|
scheduler.resume_job(str(_id))
|
||||||
return success_api(msg="启动成功")
|
return success_api(msg="启动成功")
|
||||||
return fail_api(msg="数据错误")
|
return fail_api(msg="数据错误")
|
||||||
|
|
||||||
@@ -75,8 +101,6 @@ def remove_job(_id): # 移除
|
|||||||
scheduler.remove_job(str(_id))
|
scheduler.remove_job(str(_id))
|
||||||
return success_api(msg="删除成功")
|
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,
|
# 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)
|
# second=10, replace_existing=True)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user