Skip to content

Commit d47ad95

Browse files
committed
add context.Context
1 parent 599fb25 commit d47ad95

3 files changed

Lines changed: 45 additions & 8 deletions

File tree

crontask.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -121,16 +121,16 @@ func NewCronTask(taskID string, isRun bool, express string, handler TaskHandle,
121121
task.IsRun = isRun
122122
task.handler = handler
123123
task.RawExpress = express
124-
expresslist := strings.Split(express, " ")
125-
if len(expresslist) != 6 {
124+
expressList := strings.Split(express, " ")
125+
if len(expressList) != 6 {
126126
return nil, errors.New("express is wrong format => not 6 parts")
127127
}
128-
task.time_WeekDay = parseExpress(expresslist[5], ExpressType_WeekDay)
129-
task.time_Month = parseExpress(expresslist[4], ExpressType_Month)
130-
task.time_Day = parseExpress(expresslist[3], ExpressType_Day)
131-
task.time_Hour = parseExpress(expresslist[2], ExpressType_Hour)
132-
task.time_Minute = parseExpress(expresslist[1], ExpressType_Minute)
133-
task.time_Second = parseExpress(expresslist[0], ExpressType_Second)
128+
task.time_WeekDay = parseExpress(expressList[5], ExpressType_WeekDay)
129+
task.time_Month = parseExpress(expressList[4], ExpressType_Month)
130+
task.time_Day = parseExpress(expressList[3], ExpressType_Day)
131+
task.time_Hour = parseExpress(expressList[2], ExpressType_Hour)
132+
task.time_Minute = parseExpress(expressList[1], ExpressType_Minute)
133+
task.time_Second = parseExpress(expressList[0], ExpressType_Second)
134134

135135
task.State = TaskState_Init
136136
task.context = context

example/timeout/main.go

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package main
2+
3+
import (
4+
"context"
5+
"fmt"
6+
"time"
7+
)
8+
9+
func main() {
10+
ctx, cancel := context.WithTimeout(context.Background(), time.Second*5)
11+
defer cancel()
12+
query(ctx)
13+
14+
time.Sleep(time.Hour)
15+
}
16+
17+
func query(ctx context.Context) {
18+
notifyChan := make(chan string)
19+
doing := func() {
20+
time.Sleep(time.Second)
21+
fmt.Println("1:", time.Now())
22+
time.Sleep(time.Second * 3)
23+
fmt.Println("2:", time.Now())
24+
time.Sleep(time.Second * 5)
25+
fmt.Println("3:", time.Now())
26+
notifyChan <- "1"
27+
}
28+
go doing()
29+
select {
30+
case <-notifyChan:
31+
fmt.Println("done")
32+
case <-ctx.Done():
33+
fmt.Println("timeout")
34+
}
35+
}

taskinfo.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package task
22

33
import (
4+
"context"
45
"sync"
56
"time"
67
)
@@ -47,6 +48,7 @@ type (
4748
IsEnd bool //如果设置该属性为true,则停止当次任务的后续执行,一般用在OnBegin中
4849
Error error
4950
Header map[string]interface{}
51+
Context context.Context
5052
}
5153

5254
CounterInfo struct {

0 commit comments

Comments
 (0)