- task schedule added.
This commit is contained in:
43
business/jxutils/tasksch/task_man.go
Normal file
43
business/jxutils/tasksch/task_man.go
Normal file
@@ -0,0 +1,43 @@
|
||||
package tasksch
|
||||
|
||||
import (
|
||||
"sort"
|
||||
"time"
|
||||
)
|
||||
|
||||
var (
|
||||
defTaskMan TaskMan
|
||||
)
|
||||
|
||||
type TaskMan struct {
|
||||
taskList map[string]*Task
|
||||
}
|
||||
|
||||
func init() {
|
||||
defTaskMan.taskList = make(map[string]*Task)
|
||||
}
|
||||
|
||||
func (m *TaskMan) RunTask(taskName string, worker WorkFunc, resultHandler ResultHandlerFunc, parallelCount, batchSize int, userName string, itemList interface{}, params ...interface{}) *Task {
|
||||
task := RunTask(taskName, worker, resultHandler, parallelCount, batchSize, userName, itemList, params...)
|
||||
m.taskList[task.ID] = task
|
||||
return task
|
||||
}
|
||||
|
||||
func (m *TaskMan) GetTasks(taskID string, fromStatus, toStatus int, lastHours int) (taskList []*Task) {
|
||||
lastTime := time.Now().Add(time.Duration(-lastHours) * time.Hour).Unix()
|
||||
for k, v := range m.taskList {
|
||||
if !((taskID != "" && taskID != k) || v.Status < fromStatus || v.Status > toStatus || v.CreatedAt.Unix() < lastTime) {
|
||||
taskList = append(taskList, v)
|
||||
}
|
||||
}
|
||||
sort.Sort(TaskList(taskList))
|
||||
return taskList
|
||||
}
|
||||
|
||||
func RunManagedTask(taskName string, worker WorkFunc, resultHandler ResultHandlerFunc, parallelCount, batchSize int, userName string, itemList interface{}, params ...interface{}) *Task {
|
||||
return defTaskMan.RunTask(taskName, worker, resultHandler, parallelCount, batchSize, userName, itemList, params...)
|
||||
}
|
||||
|
||||
func GetTasks(taskID string, fromStatus, toStatus int, lastHours int) (taskList []*Task) {
|
||||
return defTaskMan.GetTasks(taskID, fromStatus, toStatus, lastHours)
|
||||
}
|
||||
Reference in New Issue
Block a user