Daily Study
更新: 8/7/2025 字数: 0 字 时长: 0 分钟
Daily Plan
#todo
Go定时器复习
今天回顾了一下定时任务的一些基本写法,分为 time.Ticker 和 gocorn 第三方库
首先是 time.Ticker 见 Go,然后看了一篇博客介绍了其常见用法https://www.cnblogs.com/failymao/p/15068712.html
然后是 gocron:https://github.com/go-co-op/gocron
GoCron
项目架构与核心结构
- 核心对象:Scheduler(调度器)
- 主要模块/结构体:
- Scheduler:负责任务管理、调度和执行
- Job:任务单元,包含执行函数、时间表达式和状态
- Task/Function:被调度执行的具体业务逻辑
- 关键功能:
- 注册周期性或定时任务(支持秒、分、时、日、周、月等多种周期)
- 任务启停、任务标签、任务状态查询
- 并发/串行执行、错误处理、持久化(可选)
- 支持分布式调度(通过扩展)
结构与功能分层
主要调用流程
- 初始化调度器
用户通过gocron.NewScheduler()
创建 Scheduler 实例。 - 注册任务
调用scheduler.Every(1).Second().Do(taskFunc)
注册 Job,并绑定 Task。 - 启动调度器
调用scheduler.StartAsync()
或scheduler.StartBlocking()
启动任务调度循环。 - 任务调度执行
Scheduler 定期遍历所有 Job,根据调度策略判断是否执行,触发 Task。 - 任务状态和错误处理
Job 可查询状态、处理错误,可通过标签管理任务。
数据流动路径示意
gocron 以 Scheduler 为核心,管理 Job 实例,每个 Job 绑定一个待执行的 Task。用户通过链式 API 注册任务,调度器按给定策略触发任务执行。数据流主要在 Scheduler、Job 和 Task 之间流动,支持高扩展性和易用性。