Skip to content

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:被调度执行的具体业务逻辑
  • 关键功能
    • 注册周期性或定时任务(支持秒、分、时、日、周、月等多种周期)
    • 任务启停、任务标签、任务状态查询
    • 并发/串行执行、错误处理、持久化(可选)
    • 支持分布式调度(通过扩展)

结构与功能分层

主要调用流程

  1. 初始化调度器
    用户通过 gocron.NewScheduler() 创建 Scheduler 实例。
  2. 注册任务
    调用 scheduler.Every(1).Second().Do(taskFunc) 注册 Job,并绑定 Task。
  3. 启动调度器
    调用 scheduler.StartAsync() 或 scheduler.StartBlocking() 启动任务调度循环。
  4. 任务调度执行
    Scheduler 定期遍历所有 Job,根据调度策略判断是否执行,触发 Task。
  5. 任务状态和错误处理
    Job 可查询状态、处理错误,可通过标签管理任务。

数据流动路径示意

gocron 以 Scheduler 为核心,管理 Job 实例,每个 Job 绑定一个待执行的 Task。用户通过链式 API 注册任务,调度器按给定策略触发任务执行。数据流主要在 Scheduler、Job 和 Task 之间流动,支持高扩展性和易用性。

菜就多练

本站访客数 人次 本站总访问量