once添加支持不处理回调的配置
This commit is contained in:
@@ -106,7 +106,7 @@ func InitOnce(ctx context.Context, re redis.UniversalClient, keyPrefix string, c
|
||||
return nil, errors.New("redis client is nil")
|
||||
}
|
||||
|
||||
if call == nil {
|
||||
if call == nil && !op.allowNilFunc {
|
||||
op.logger.Errorf(ctx, "worker callback is nil")
|
||||
return nil, errors.New("worker callback is nil")
|
||||
}
|
||||
@@ -144,6 +144,11 @@ func InitOnce(ctx context.Context, re redis.UniversalClient, keyPrefix string, c
|
||||
maxWorkers: op.maxWorkers,
|
||||
}
|
||||
|
||||
// 不需要回调
|
||||
if call == nil {
|
||||
return wo, nil
|
||||
}
|
||||
|
||||
// 初始化优先级
|
||||
if op.priorityType != priorityTypeNone {
|
||||
|
||||
@@ -497,8 +502,8 @@ func (l *Once) create(ctx context.Context, source createSource, jobType jobType,
|
||||
l.logger.Errorf(l.ctx, "redis.ZScore err:%v", err)
|
||||
return err
|
||||
}
|
||||
l.logger.Errorf(l.ctx, "task exists taskType:%v taskId:%v attachData:%v runCount:%v", taskType, taskId, attachData, runCount)
|
||||
return ErrTaskExists
|
||||
l.logger.Errorf(l.ctx, "task exists taskType:%v taskId:%v attachData:%v runCount:%v", taskType, taskId, attachData, runCount)
|
||||
return ErrTaskExists
|
||||
}
|
||||
|
||||
// 删除任务
|
||||
|
||||
@@ -18,6 +18,7 @@ type Options struct {
|
||||
maxRunCount int // 单个任务最大运行次数 0代表不限
|
||||
maxWorkers int // 最大工作协程数
|
||||
cronParser *cron.Parser // cron表达式解析器
|
||||
allowNilFunc bool // 允许注册nil函数
|
||||
}
|
||||
|
||||
type priorityType int8
|
||||
@@ -43,6 +44,7 @@ func defaultOptions() Options {
|
||||
maxRunCount: 0,
|
||||
maxWorkers: 100,
|
||||
cronParser: &parser,
|
||||
allowNilFunc: false,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -80,6 +82,13 @@ func WithLocation(zone *time.Location) Option {
|
||||
}
|
||||
}
|
||||
|
||||
// 允许注册nil回调函数
|
||||
func WithAllowNilFunc(allow bool) Option {
|
||||
return func(o *Options) {
|
||||
o.allowNilFunc = allow
|
||||
}
|
||||
}
|
||||
|
||||
// 设置任务最长执行时间
|
||||
func WithTimeout(d time.Duration) Option {
|
||||
return func(o *Options) {
|
||||
|
||||
Reference in New Issue
Block a user