Go语言 cron/v3 定时任务调度库使用笔记

1. 安装依赖

要使用 cron/v3 定时任务库,首先需要安装该库:

go get github.com/robfig/cron/v3

2. Cron 定时任务基本用法

  • 创建 Cron 调度器:使用 cron.New() 创建一个新的 Cron 调度器。
  • 添加任务:使用 c.AddJob() 添加定时任务,任务的执行间隔可以使用 Cron 表达式(如 @every 60s 表示每 60 秒执行一次)。
  • 启动调度器:使用 c.Start() 启动定时任务调度器。

3. 任务类型和实现 cron.Job 接口

为了将任务添加到调度器,任务必须实现 cron.Job 接口。该接口非常简单,只有一个方法 Run(),所有定时任务的执行逻辑都放在 Run() 方法内。

type Job interface {
    Run()
}

4. 示例:使用结构体作为任务

我们可以定义一个结构体,像 UsdtRateJob,并实现 Run() 方法来执行任务的具体逻辑。将结构体实例作为任务添加到 Cron 调度器中。

代码示例:
package main

import (
    "fmt"
    "log"
    "github.com/robfig/cron/v3"
)

// 定义一个任务结构体 UsdtRateJob
type UsdtRateJob struct{}

// 实现 cron.Job 接口的 Run 方法
func (j UsdtRateJob) Run() {
    // 执行任务的具体逻辑
    fmt.Println("执行汇率监听任务...")
    // 可以在此处添加 API 查询等操作
}

func main() {
    // 创建一个新的 Cron 调度器
    c := cron.New()

    // 每 60 秒执行一次 UsdtRateJob 任务
    _, err := c.AddJob("@every 60s", UsdtRateJob{})
    if err != nil {
        log.Fatal(err)
    }

    // 启动 Cron 调度器
    c.Start()

    // 保持主程序运行,确保任务执行
    select {}
}

5. 详细解释

  1. UsdtRateJob{}
    这是创建一个 UsdtRateJob 类型的实例(一个结构体)。此结构体实现了 cron.Job 接口的 Run() 方法。
  2. c.AddJob("@every 60s", UsdtRateJob{})
    该方法将 UsdtRateJob 任务添加到调度器中,并设定任务每 60 秒执行一次。
  3. Run() 方法
    任务的具体执行逻辑必须放在 Run() 方法中。这个方法会在每次定时触发时调用。
  4. c.Start()
    启动 Cron 调度器,开始按照设定的时间间隔执行任务。
  5. select {}
    由于 Go 是基于并发的,select {} 会使主程序保持运行,确保定时任务能够继续执行。

6. Cron 表达式

Cron 表达式用于定义任务的执行时间。常见的几种表达式:

  • @every 60s:每 60 秒执行一次任务。
  • @every 1h:每小时执行一次。
  • @every 30m:每 30 分钟执行一次。
  • @every 1d:每天执行一次。

7. 总结

  • cron/v3 是一个强大的 Go 定时任务库,可以通过 Cron 表达式灵活地调度任务。
  • 创建自定义的任务结构体并实现 Run() 方法是核心,任务可以根据需要执行不同的逻辑。
  • 使用 c.AddJob() 添加任务,c.Start() 启动 Cron 调度器,然后通过 select {} 保持程序运行。

这样,您可以方便地在 Go 中实现各种定时任务调度功能。

每日更新-免费小火箭账号
不要错过任何机会,探索最新的应用和游戏,就在我们的平台。
立即访问
最后修改:2024 年 12 月 20 日
如果觉得我的文章对你有用,请随意赞赏