scheduled 是一个计划任务管理工具
通过 scheduled 可以实现管理类似 linux 中 crontab 功能的计划任务功能。 当然功能并不止于此,用户可以实现自己的调度算法,定制任务的启动机制。
目前 scheduled 内置了以下三种算法:
- at 在固定的时间点执行一次任务;
- cron 实现了 crontab 中的大部分语法功能;
- ticker 以固定的时间段执行任务,与 time.Ticker 相同;
srv := scheduled.NewServer(time.UTC, nil, nil)
ticker := func() error {
_,err := fmt.Println("ticker @ ", time.Now())
return err
}
expr := func() error {
_,err := fmt.Println("cron @ ", time.Now())
return err
}
srv.Tick(ticker, 1*time.Minute, false, false)
srv.Cron(expr, "@daily", false)
srv.Cron(expr, "* * 1 * * *", false)
ctx, cancel := context.WithCancel(context.Background())
srv.Serve(ctx)