在 Go 语言中,使用多种方式实现定时任务

1.使用 time 包的 After 和 Ticker 功能

package main import ( "fmt" "time" ) func main() { // 单次定时任务 timer := time.After(5 * time.Second) <-timer fmt.Println("5 秒后执行的单次定时任务") // 周期性定时任务 ticker := time.NewTicker(2 * time.Second) defer ticker.Stop() for range ticker.C { fmt.Println("每 2 秒执行一次的周期性定时任务") } }

2.使用第三方库 github.com/robfig/cron

package main import ( "fmt" "github.com/gin-gonic/gin" "github.com/robfig/cron" ) // InitCron 初始化并启动定时任务 func InitCron() { c := cron.New() // 每分钟的第 30 秒执行 c.AddFunc("30 * * * * *", func() { fmt.Println("每分钟的第 30 秒执行") }) // 每 5 分钟执行 c.AddFunc("*/5 * * * *", func() { fmt.Println("每 5 分钟执行") }) c.Start() } func main() { r := gin.Default() // 请求验证码的路由 r.GET("/getCode", func(c *gin.Context) { // 此处编写生成和返回验证码的逻辑 c.JSON(200, gin.H{"message": "验证码已生成并返回"}) }) InitCron() // 启动服务器,监听 8080 端口 if err := r.Run(":8080"); err!= nil { fmt.Println("服务器启动失败:", err) } }

在定时任务的执行函数中,根据业务可以添加开关状态决定是否执行任务。

给个关注,下期继续分享干货。

点赞
收藏

评论区

加载中...

相关推荐

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

java目前可以通过以下几种方式进行定时任务

1、单机部署模式Timer:jdk中自带的一个定时调度类,可以简单的实现按某一频度进行任务执行。提供的功能比较单一,无法实现复杂的调度任务。ScheduledExecutorService:也是jdk自带的一个基于线程池设计的定时任务类。其每个调度任务都会分配到线程池中的一个线程执行,所以其任务是并发执行的,互不影响。

java 定时任务之Timer

java定时任务之TimerTimer是什么?Timer位于java.util包中。官方API的描述是用来控制任务执行的,每个任务可以执行一次,也可以执行多次。在实际应用中,我们可以用它来控制某个任务在特定的时间执行,或者按照某个固定频率或者时间间隔执行。Timer怎么用?它提供了三类方

Java实现几分钟之后调度任务的定时器

几分钟之后执行某一操作,使用定时器Timer可以实现,Timer是jdk中提供的一个定时器工具,使用的时候会在主线程之外起一个单独的线程执行指定的计划任务,可以指定执行一次或者反复执行多次。具体实现如下:1packagecom.aone.foottalk.common;23importjava

Linux的定时任务

任务计划的条件:1.在未来的某个时间点执行一次某个任务(atbatch)2.周期性的执行某个任务(cron)at在指定时间执行任务_用法_at\选项参数\\时间\_选项参数_\l      查看作业\c      显示即将执行任务的细节\d      使用任务id号

Synctoy2.1使用定时任务0X1

环境描述:公司需要在windows上面使用双向文件同步,目前发现SyncToy可以实现这个功能,但是在Windows2012上面,添加定时任务的时候,执行状态总是0x1,定时任务配置确认多次,肯定没有问题;同样在windows10上面设置定时任务,就能运行,在google上面查了好多帖子,都是这样,都没有解决,大多数说是windows的bug,可以使用