Documentation ¶
Index ¶
- type CronJob
- type Job
- type Schedule
- type Scheduler
- func (s *Scheduler) Add(jobs ...CronJob) *Scheduler
- func (s *Scheduler) AddCronjob(jobs ...CronJob) *Scheduler
- func (s *Scheduler) DisableMsg() *Scheduler
- func (s *Scheduler) Done() <-chan struct{}
- func (s *Scheduler) QuerySchedule(title string) *Schedule
- func (s *Scheduler) Run()
- func (s *Scheduler) SetLogger(logger logger.Iface) *Scheduler
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type CronJob ¶
type CronJob interface { // String 可选的任务文字描述 String() string // Interval 任务执行间隔, 调度协程会在此时间间隔内循环触发 Do 任务, 任务的触发间隔不考虑任务的执行时间 Interval() time.Duration // Do 定时任务, 每 Interval 个时间间隔都将触发此任务,即便上一个任务可能因超时未执行完毕. // 其中 Do 的执行耗时应 <= Interval 本身, 否则将视为超时, 超时将触发 WhenTimeout Do(ctx context.Context) error // WhenError 当 Do 执行失败时触发的回调, 若 Do 执行失败且超时, 则 WhenError 和 WhenTimeout // 将同时被执行 WhenError(errs ...error) // WhenTimeout 当定时任务未在规定时间内执行完毕时触发的回调, 当上一次 Do 执行超时时, 此 WhenTimeout 将和 // Do 同时执行, 即 Do 和 WhenError 在同一个由 WhenTimeout 创建的子协程内。 WhenTimeout() // OnStartup 当任务启动时触发的回调,其中 Do 操作会在此回调执行完毕后启动 OnStartup() // OnShutdown 当任务退出时触发的回调 OnShutdown() }
type Schedule ¶
type Schedule struct {
// contains filtered or unexported fields
}
type Scheduler ¶
type Scheduler struct {
// contains filtered or unexported fields
}
func NewScheduler ¶
NewScheduler 创建一个任务调度器
@param ctx context.Context 根Context @param lg logger.Iface 可选的日志句柄 @return scheduler 任务调度器 # Usage // 首先创建一个根 Context pCtx, _ := context.WithTimeout(context.Background(), 50*time.Second) scheduler := NewScheduler(pCtx, logger) // 定义任务, 需实现 CronJob 接口 type Clock struct { Job // 默认 Job 未实现 Do 方法 lastTime time.Time } func (c *Clock) Interval() time.Duration { return 1 * time.Second } func (c *Clock) String() string { return "报时器" } func (c *Clock) Do(ctx context.Context) error { diff := time.Now().Sub(c.lastTime) c.lastTime = time.Now() fmt.Println("time interval:", diff.String()) return nil } // 注册任务 scheduler.Add(&Clock{}) // 运行调度器 scheduler.Run() // 检测调度器是否退出 <-scheduler.Done()
func (*Scheduler) AddCronjob ¶
AddCronjob 添加任务
func (*Scheduler) QuerySchedule ¶
QuerySchedule 依据任务描述查找任务
Click to show internal directories.
Click to hide internal directories.