任务调度update

This commit is contained in:
2023-01-18 14:53:01 +08:00
parent 0dfc11c113
commit 12473fd656
6 changed files with 57 additions and 67 deletions
+24 -25
View File
@@ -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)
}
}
}