44 "context"
55 "log"
66 "math/rand"
7- "os"
87 "strconv"
98 "time"
109
@@ -15,39 +14,41 @@ import (
1514)
1615
1716func main () {
18- container := memeorycontainer .MakeQueueContainer (10000 , 100 * time .Millisecond )
17+ save := func (ctx context.Context , ftask * lighttaskscheduler.Task , data interface {}) error {
18+ log .Printf ("save task %s: result = %d \n " , ftask .TaskId , data .(int32 ))
19+ return nil
20+ }
21+ container := memeorycontainer .MakeQueueContainer (10000 , 100 * time .Millisecond , save )
1922 actuator := & addexample.AddActuator {}
2023 sch := lighttaskscheduler .MakeNewScheduler (
2124 context .Background (),
2225 container , actuator ,
2326 lighttaskscheduler.Config {
24- TaskLimit : 5 ,
25- ScanInterval : 50 * time .Millisecond ,
26- TaskTimeout : 5 * time .Second , // 5s 超时
27+ TaskLimit : 5 ,
28+ ScanInterval : 50 * time .Millisecond ,
29+ TaskTimeout : 5 * time .Second , // 5s 超时
30+ EnableFinshedTaskList : true , // 开启已完成任务返回功能
2731 },
2832 )
2933
30- var c chan os.Signal
3134 r := rand .New (rand .NewSource (time .Now ().UnixNano ()))
3235 for i := 0 ; i < 10 ; i ++ {
33- select {
34- case <- c :
35- return
36- default :
37- sch .AddTask (context .Background (),
38- lighttaskscheduler.Task {
39- TaskId : strconv .Itoa (i ),
40- TaskItem : addexample.AddTask {
41- A : r .Int31 () % 1000 ,
42- B : r .Int31 () % 1000 ,
43- },
44- })
45- }
36+ sch .AddTask (context .Background (),
37+ lighttaskscheduler.Task {
38+ TaskId : strconv .Itoa (i ),
39+ TaskItem : addexample.AddTask {
40+ A : r .Int31 () % 1000 ,
41+ B : r .Int31 () % 1000 ,
42+ },
43+ })
4644 }
47-
48- for range c {
49- log .Println ("stop Scheduling" )
50- sch .Close ()
51- return
45+ for task := range sch .FinshedTasks () {
46+ if task .TaskStatus == lighttaskscheduler .TASK_STATUS_FAILED {
47+ log .Printf ("failed task %s, reason: %s, timecost: %dms\n " ,
48+ task .TaskId , task .FailedReason , task .TaskEnbTime .Sub (task .TaskStartTime ).Milliseconds ())
49+ } else if task .TaskStatus == lighttaskscheduler .TASK_STATUS_SUCCESS {
50+ log .Printf ("success task %s, timecost: %dms\n " , task .TaskId ,
51+ task .TaskEnbTime .Sub (task .TaskStartTime ).Milliseconds ())
52+ }
5253 }
5354}
0 commit comments