Files
Message-Push-Nest/service/cron_service/tasks.go
T

54 lines
1.0 KiB
Go
Raw Normal View History

2023-12-31 21:31:56 +08:00
package cron_service
import (
"fmt"
"github.com/robfig/cron/v3"
2024-01-13 12:04:40 +08:00
"github.com/sirupsen/logrus"
2023-12-31 21:31:56 +08:00
"sync"
)
type ScheduledTask struct {
//ID int
Schedule string
Job func()
}
var (
CronInstance *cron.Cron
TaskList map[cron.EntryID]*ScheduledTask
mutex sync.Mutex
)
func init() {
CronInstance = cron.New()
CronInstance.Start()
TaskList = make(map[cron.EntryID]*ScheduledTask)
}
// 添加定时任务
func AddTask(task ScheduledTask) cron.EntryID {
mutex.Lock()
defer mutex.Unlock()
taskId, err := CronInstance.AddFunc(task.Schedule, task.Job)
if err != nil {
// 处理错误
2024-01-13 12:04:40 +08:00
logrus.Error(fmt.Sprintf("添加定时任务失败,原因:%s", err))
2023-12-31 21:31:56 +08:00
} else {
TaskList[taskId] = &task
2024-01-13 13:43:30 +08:00
logrus.Info(fmt.Sprintf("添加定时任务成功,entryID: %d, cron: %s", taskId, task.Schedule))
2023-12-31 21:31:56 +08:00
}
return taskId
}
// 删除定时任务
func RemoveTask(taskID cron.EntryID) {
mutex.Lock()
defer mutex.Unlock()
if _, ok := TaskList[taskID]; ok {
CronInstance.Remove(taskID)
delete(TaskList, taskID)
}
}