任务调度update
This commit is contained in:
+24
-25
@@ -1,7 +1,6 @@
|
||||
package cronjob
|
||||
|
||||
import (
|
||||
"cutego/core/api/v1/request"
|
||||
"cutego/core/job"
|
||||
"cutego/core/service"
|
||||
"cutego/pkg/common"
|
||||
@@ -19,59 +18,59 @@ import (
|
||||
// 在26分、29分、33分执行一次:0 26,29,33 * * * ?
|
||||
// 每天的0点、13点、18点、21点都执行一次:0 0 0,13,18,21 * * ?
|
||||
|
||||
// 定时任务: 别名与调度器的映射
|
||||
var AliasCronMap = make(map[string]*cron.Cron)
|
||||
// aliasCronMap 定时任务: 别名与调度器的映射
|
||||
var aliasCronMap = make(map[string]*cron.Cron)
|
||||
|
||||
// StopCronFunc 停止任务, 不会停止已开始的任务
|
||||
func StopCronFunc(aliasName string) {
|
||||
common.InfoLogf("停止任务 %s ---> Start", aliasName)
|
||||
AliasCronMap[aliasName].Stop()
|
||||
go aliasCronMap[aliasName].Stop()
|
||||
common.InfoLogf("停止任务 %s ---> Finish", aliasName)
|
||||
}
|
||||
|
||||
// StartCronFunc 开始任务
|
||||
func StartCronFunc(aliasName string) {
|
||||
common.InfoLogf("唤起任务 %s ---> Start", aliasName)
|
||||
AliasCronMap[aliasName].Start()
|
||||
go aliasCronMap[aliasName].Start()
|
||||
common.InfoLogf("唤起任务 %s ---> Finish", aliasName)
|
||||
}
|
||||
|
||||
// RemoveCronFunc 移除任务
|
||||
func RemoveCronFunc(aliasName string) {
|
||||
common.InfoLogf("移除任务 %s ---> Start", aliasName)
|
||||
StopCronFunc(aliasName)
|
||||
delete(AliasCronMap, aliasName)
|
||||
go StopCronFunc(aliasName)
|
||||
delete(aliasCronMap, aliasName)
|
||||
common.InfoLogf("移除任务 %s ---> Finish", aliasName)
|
||||
}
|
||||
|
||||
// AppendCronFunc 新增任务
|
||||
func AppendCronFunc(jobCron string, aliasName string, status string) {
|
||||
if aliasCronMap[aliasName] != nil {
|
||||
aliasCronMap[aliasName].Stop()
|
||||
aliasCronMap[aliasName] = nil
|
||||
}
|
||||
common.InfoLogf("新增任务 %s ---> Start", aliasName)
|
||||
c := cron.New()
|
||||
c.AddFunc(jobCron, job.AliasFuncMap[aliasName])
|
||||
err := c.AddFunc(jobCron, job.AliasFuncMap[aliasName])
|
||||
if err != nil {
|
||||
panic("任务追加失败, " + err.Error())
|
||||
}
|
||||
if status == "1" {
|
||||
c.Start()
|
||||
common.InfoLogf("调度定时任务 --- %s ---> Success", aliasName)
|
||||
go func() {
|
||||
c.Start()
|
||||
aliasCronMap[aliasName] = c
|
||||
common.InfoLogf("调度定时任务 --- %s ---> Success", aliasName)
|
||||
}()
|
||||
}
|
||||
AliasCronMap[aliasName] = c
|
||||
common.InfoLogf("新增任务 %s ---> Finish", aliasName)
|
||||
}
|
||||
|
||||
func init() {
|
||||
if len(job.AliasFuncMap) > 0 {
|
||||
//go test()
|
||||
index := 1
|
||||
for true {
|
||||
q := request.CronJobQuery{}
|
||||
q.PageNum = index
|
||||
data, _ := service.CronJobService{}.FindPage(q)
|
||||
if len(data) == 0 {
|
||||
break
|
||||
}
|
||||
for _, datum := range data {
|
||||
AppendCronFunc(datum.JobCron, datum.FuncAlias, datum.Status)
|
||||
}
|
||||
index += 1
|
||||
jobService := service.CronJobService{}
|
||||
jobs, total := jobService.FindAll()
|
||||
if len(job.AliasFuncMap) > 0 && total > 0 {
|
||||
for _, datum := range jobs {
|
||||
AppendCronFunc(datum.JobCron, datum.FuncAlias, datum.Status)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user