Go编写定时器与定时任务详解(附第三方库gocron用法)

Go 编写定时器和定时任务

在 项目开发当中,可能会遇到这样的场景:

1 A任务需要在多久之后执行一次(定时器)

2.B任务需要每隔多长时间执行一次 (定时任务)

谈到定时任务,离不开linux的crontab. 先简单了解下crontab

使用crontab实现定时器和定时任务也可以,但是crontab默认只能精确到分钟, 如果想要精确到秒可以使用for循环处理秒级人物

本文简单介绍下go 实现定时器和定时任务的用法以及简单介绍一个第三方库gocron的用法

Timer

1 timer实现定时器 (延迟执行), 这个定时器只会触发一次.

使用于场景1(当然如果把下面的代码写在一个for循环中也可以实现定时任务)

Demo:

结果:

1 s 时间到

2 停止定时器

使用time.Stop() 停止定时器

​ 通过向通道发送一个信号,通知定时器是否关闭

Demo:

结果:

继续执行定时器

重置定时器

Demo:

​ 结果:

定时器开始
 1 s 时间到  1648268475

Ticker

Ticker也是定时器,它是一个周期性的定时器 使用场景2

设置3秒执行一次Demo

结果:

ticker ticker ticker ...
ticker ticker ticker ...
ticker ticker ticker ...

gocron

一个第三方库实现定时任务 场景2

安装

Demo

结果:

cron2
cron1
cron1
cron2
cron1
cron2
cron1
cron2

总结