Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 79fda8c78c |
+6
-1
@@ -32,6 +32,7 @@ type Cluster struct {
|
|||||||
ctx context.Context
|
ctx context.Context
|
||||||
redis redis.UniversalClient
|
redis redis.UniversalClient
|
||||||
cache *cachex.Cache
|
cache *cachex.Cache
|
||||||
|
timeout time.Duration
|
||||||
logger Logger
|
logger Logger
|
||||||
keyPrefix string // key前缀
|
keyPrefix string // key前缀
|
||||||
location *time.Location // 根据时区计算的时间
|
location *time.Location // 根据时区计算的时间
|
||||||
@@ -55,6 +56,7 @@ func InitCluster(ctx context.Context, red redis.UniversalClient, keyPrefix strin
|
|||||||
ctx: ctx,
|
ctx: ctx,
|
||||||
redis: red,
|
redis: red,
|
||||||
cache: cachex.NewCache(),
|
cache: cachex.NewCache(),
|
||||||
|
timeout: op.timeout,
|
||||||
logger: op.logger,
|
logger: op.logger,
|
||||||
keyPrefix: keyPrefix,
|
keyPrefix: keyPrefix,
|
||||||
location: op.location,
|
location: op.location,
|
||||||
@@ -64,6 +66,9 @@ func InitCluster(ctx context.Context, red redis.UniversalClient, keyPrefix strin
|
|||||||
setKey: "timer:cluster_setKey" + keyPrefix, // 重入集合
|
setKey: "timer:cluster_setKey" + keyPrefix, // 重入集合
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 设置锁的超时时间
|
||||||
|
lockx.InitOption(lockx.SetTimeout(op.timeout))
|
||||||
|
|
||||||
// 监听任务
|
// 监听任务
|
||||||
go clu.watch()
|
go clu.watch()
|
||||||
|
|
||||||
@@ -418,7 +423,7 @@ type ReJobData struct {
|
|||||||
// 执行任务
|
// 执行任务
|
||||||
func (c *Cluster) doTask(ctx context.Context, taskId string) {
|
func (c *Cluster) doTask(ctx context.Context, taskId string) {
|
||||||
|
|
||||||
ctx, cancel := context.WithCancel(ctx)
|
ctx, cancel := context.WithTimeout(ctx, c.timeout)
|
||||||
defer cancel()
|
defer cancel()
|
||||||
|
|
||||||
val, ok := clusterWorkerList.Load(taskId)
|
val, ok := clusterWorkerList.Load(taskId)
|
||||||
|
|||||||
@@ -3,14 +3,16 @@ package timerx
|
|||||||
import "time"
|
import "time"
|
||||||
|
|
||||||
type Options struct {
|
type Options struct {
|
||||||
logger Logger
|
logger Logger
|
||||||
location *time.Location
|
location *time.Location
|
||||||
|
timeout time.Duration
|
||||||
}
|
}
|
||||||
|
|
||||||
func defaultOptions() Options {
|
func defaultOptions() Options {
|
||||||
return Options{
|
return Options{
|
||||||
logger: NewLogger(),
|
logger: NewLogger(),
|
||||||
location: time.Local,
|
location: time.Local,
|
||||||
|
timeout: time.Hour,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -37,3 +39,10 @@ func SetTimeZone(zone *time.Location) Option {
|
|||||||
o.location = zone
|
o.location = zone
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 设置任务最长执行时间
|
||||||
|
func SetTimeout(d time.Duration) Option {
|
||||||
|
return func(o *Options) {
|
||||||
|
o.timeout = d
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user