Golang AGScheduler动态持久化任务调度的强大库使用实例
作者:kwkwc
这篇文章主要为大家介绍了Golang AGScheduler动态持久化任务调度的强大库使用实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
正文
以前一直使用 Python 的任务调度库 APScheduler(支持任务持久化,支持多种存储方式),但由于没有找到与它功能和使用方式类似的 Golang 库,所以模仿 APScheduler 3.x 写了个简易版本的 AGScheduler。
AGScheduler
Advanced Golang Scheduler (AGScheduler) 是一款适用于 Golang 的任务调度程序,支持多种调度方式,动态更改和持久化任务
警示
该库处于实验阶段,不建议用于生产环境
链接 https://github.com/kwkwc/agscheduler
特性
支持三种调度方式
- [x] 一次性执行
- [x] 间隔执行
- [x] Cron 式调度
支持多种任务存储方式
使用
package main import ( "fmt" "log/slog" "time" "github.com/kwkwc/agscheduler" "github.com/kwkwc/agscheduler/stores" ) func printMsg(j agscheduler.Job) { slog.Info(fmt.Sprintf("Run %s %s\n", j.Name, j.Args)) } func main() { agscheduler.RegisterFuncs(printMsg) store := &stores.MemoryStore{} scheduler := &agscheduler.Scheduler{} scheduler.SetStore(store) job := agscheduler.Job{ Name: "Job", Type: agscheduler.TYPE_INTERVAL, Timezone: "UTC", Func: printMsg, Args: []any{"arg1", "arg2", "arg3"}, Interval: 2 * time.Second, } jobId := scheduler.AddJob(job) job, _ = scheduler.GetJob(jobId) slog.Info(fmt.Sprintf("Scheduler add %s %s.\n\n", job.Name, job)) scheduler.Start() slog.Info("Scheduler Start.\n\n") select {} }
注册函数
由于 golang 无法序列化函数,所以 scheduler.Start()
之前需要使用 RegisterFuncs
注册函数
致谢
以上就是Golang AGScheduler动态持久化任务调度的强大库使用实例的详细内容,更多关于Go AGScheduler任务调度的资料请关注脚本之家其它相关文章!