当前位置: 首页 > news >正文

go 定时任务 gocron timer

选型推荐(DeepSeek)

简单任务调度: 推荐使用 cron 或 gocron,它们轻量且易用。

复杂任务调度: 推荐使用 go-quartz,支持任务依赖和持久化。

分布式任务调度: 推荐使用 asynq,基于 Redis 实现,适合分布式场景。

任务状态监控: 推荐使用 jobrunner,提供 Web 界面查看任务状态。

gocron 示例

import (
    "fmt"
    "time"

    "github.com/go-co-op/gocron"
)

func jobFunc() {
    fmt.Println("任务执行啦!")
}

func main() {
    fmt.Println("main ...")

    s := gocron.NewScheduler(time.UTC)
    // 每分钟执行一次任务
    // s.Every(1).Second().Do(jobFunc)

    // 每天的固定时间执行任务
    // s.Every(1).Day().At("10:30").Do(jobFunc)

    // 3S后执行一次
    now := time.Now().Add(3 * time.Second)
    s.Every(1).Second().StartAt(now).LimitRunsTo(2).Do(jobFunc)

    s.StartAsync()
    time.Sleep(time.Second * 7)
    fmt.Println("success ...")
}

Timer定时器

// +main ...
// 2025-02-12 16:25:58.8250935 +0800 CST m=+0.004155201
// 2025-02-12 16:26:00.8560862 +0800 CST m=+2.035117201
// 2025-02-12 16:26:03.8679151 +0800 CST m=+5.046900601
// 2025-02-12 16:26:05.873156 +0800 CST m=+7.052111201
// success ...
func main() {
    fmt.Println("main ...")

    // 当前时间打印
    t1 := time.Now()
    fmt.Println(t1.String())

    timer1 := time.NewTimer(2 * time.Second)
    // 阻塞延迟2S
    t2 := <-timer1.C
    fmt.Println(t2.String())

    // 重置,重新延迟3S
    timer1.Reset(3 * time.Second)
    t2 = <-timer1.C
    fmt.Println(t2.String())

    // 如果没到时间 关闭timer
    // if timer1.Stop() {
    //     fmt.Println("close timer success")
    // }

    // 阻塞延迟2S
    t3 := <-time.After(2 * time.Second)
    fmt.Println(t3.String())

    fmt.Println("success ...")
}

相关文章:

  • 【阮一峰】16.类型声明文件
  • Day 45 卡玛笔记
  • Linux 内核网络设备驱动编程:私有协议支持
  • element-plus 根据条件显示多选框
  • 解放大脑!用DeepSeek自动生成PPT!
  • 面试官询问项目前后端人员配比之高分示范回答
  • 蓝桥杯核心内容
  • draw.io:开源款白板/图表绘制利器
  • deepseek与其他大模型配合组合
  • VUE3+TS+element-plus项目从0开始入门 - 创建项目、认识基本结构
  • python与pycharm如何设置文件夹为源代码根目录
  • 图解MySQL【日志】——Redo Log
  • js中 ES6 新特性详解
  • Python爬虫实战:从零到一构建数据采集系统
  • 使用 INFINI Console 配置集群监控 Webhook 通知指南
  • C++ 设计模式-策略模式
  • 从波士顿动力到Figure AI:探寻人工智能驱动的机器人智能化
  • 【记录54】渐变色 linear-gradient / radial-gradient
  • 大语言模型基础
  • 2025寒假天梯训练7