iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Go怎么编写定时器与定时任务
  • 796
分享到

Go怎么编写定时器与定时任务

2023-07-02 18:07:19 796人浏览 薄情痞子
摘要

这篇文章主要介绍“Go怎么编写定时器与定时任务”,在日常操作中,相信很多人在Go怎么编写定时器与定时任务问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Go怎么编写定时器与定时任务”的疑惑有所帮助!接下来,请跟

这篇文章主要介绍“Go怎么编写定时器与定时任务”,在日常操作中,相信很多人在Go怎么编写定时器与定时任务问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Go怎么编写定时器与定时任务”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

    Go 编写定时器和定时任务

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

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

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

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

    // 每隔1秒执行一次*/1 * * * * ?// 每隔1分钟执行一次0 */1 * * * ?// 每天0点执行一次0 0 0 * * ?// 每月1号凌晨1点执行一次0 0 1 1 * ?// 在1分、2分、3分执行一次0 1,2,3 * * * ?// 每天的0点、1点、2点执行一次0 0 0,1,2 * * ?

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

    * * * * * for i in $(seq 1 11); do echo test >> /etc/demo/demo.txt; sleep 1; done

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

    Timer

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

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

    Demo:

    package mainimport ("fmt""time")func main() {t := time.NewTimer(1 * time.Second)<-t.Cfmt.Println("1 s 时间到")}

    结果:

    1 s 时间到

    2 停止定时器

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

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

    Demo:

    package mainimport ("fmt""time")func test12(ch chan int) bool {timer := time.NewTimer(1 * time.Second)select {case <-ch:if timer.Stop() {fmt.Println("关闭定时器")}return truedefault:fmt.Println("继续执行定时器")return true}}func main() {ch := make(chan int, 1)// ch <- 1go test12(ch)for {}}

    结果:

    继续执行定时器

    重置定时器

    Demo:

    func main() {// 创建一个一个定时器fmt.Println("定时器开始")myT := time.NewTimer(7 * time.Second) // 设置7秒后执行一次// 重置定时器为 1s后执行myT.Reset(1 * time.Second)<-myT.Cfmt.Println(" 1 s 时间到 ", time.Now().Unix())for {}}

    结果:

    定时器开始
     1 s 时间到  1648268475

    Ticker

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

    设置3秒执行一次Demo

    package mainimport ("fmt""time")func main() {ticker := time.NewTicker(3 * time.Second)defer ticker.Stop()for range ticker.C {fmt.Println("执行的业务逻辑")}}

    结果:

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

    gocron

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

    安装

    go get -u GitHub.com/go-co-op/gocron
    s := gocron.NewScheduler(time.UTC)s.Every(5).Seconds().Do(func(){ ... }) s.Every("5m").Do(func(){ ... })s.Every(5).Days().Do(fus.Every(1).Month(1, 2, 3).Do(func(){ ... })s.Every(1).Day().At("10:30").Do(func(){ ... })s.Every(1).Day().At("10:30;08:00").Do(func(){ ... })s.Every(1).Day().At("10:30").At("08:00").Do(func(){ ... })s.Every(1).MonthLastDay().Do(func(){ ... })s.Every(2).MonthLastDay().Do(func(){ ... })s.Cron("*/1 * * * *").Do(task) s.StartAsync()s.StartBlocking()

    Demo

    package mainimport ("fmt""time""github.com/go-co-op/gocron")func cron1() {fmt.Println("cron1")}func cron2() {fmt.Println("cron2")}func main() {timezone, _ := time.LoadLocation("Asia/Shanghai")s := gocron.NewScheduler(timezone)// 每秒执行一次s.Every(1).Seconds().Do(func() {go cron1()})// 每秒执行一次s.Every(1).Second().Do(func() {go cron2()})s.StartBlocking()}

    结果:

    cron2
    cron1
    cron1
    cron2
    cron1
    cron2
    cron1
    cron2

    到此,关于“Go怎么编写定时器与定时任务”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

    --结束END--

    本文标题: Go怎么编写定时器与定时任务

    本文链接: https://www.lsjlt.com/news/343581.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • Go怎么编写定时器与定时任务
      这篇文章主要介绍“Go怎么编写定时器与定时任务”,在日常操作中,相信很多人在Go怎么编写定时器与定时任务问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Go怎么编写定时器与定时任务”的疑惑有所帮助!接下来,请跟...
      99+
      2023-07-02
    • Go编写定时器与定时任务详解(附第三方库gocron用法)
      目录Go 编写定时器和定时任务TimerTickergocron安装Demo总结Go 编写定时器和定时任务 在 项目开发当中,可能会遇到这样的场景: 1 A任务需要在多久之后执行一次...
      99+
      2024-04-02
    • sqlserver定时任务脚本怎么编写
      在SQL Server中,可以使用SQL Server代理来创建和管理定时任务。以下是一个编写定时任务脚本的示例: USE msdb...
      99+
      2024-04-30
      sqlserver
    • oracle怎么编写和查看删除定时任务
      这篇文章主要介绍“oracle怎么编写和查看删除定时任务”,在日常操作中,相信很多人在oracle怎么编写和查看删除定时任务问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”or...
      99+
      2024-04-02
    • oracle数据库定时任务怎么写
      oracle 数据库的定时任务,称为作业计划程序,可创建和管理定期运行命令或脚本的任务。创建任务的步骤包括:1. 使用 create job 语法创建作业;2. 使用 alter job...
      99+
      2024-04-08
      oracle
    • 虚拟主机怎么写定时任务
      要在虚拟主机上设置定时任务,可以按照以下步骤进行操作:1. 登录到虚拟主机的控制面板或使用SSH连接到虚拟主机的命令行界面。2. 打...
      99+
      2023-09-12
      虚拟主机
    • android定时执行任务脚本怎么写
      在Android中,可以使用AlarmManager来定时执行任务脚本。下面是一个示例代码,演示了如何使用AlarmManager来...
      99+
      2023-10-20
      android
    • Python中threading.Timer()定时器实现定时任务
      目录1、单线程执行2、多线程执行timer最基本理解就是定时器,可以启动多个定时任务,这些定时器任务是异步执行,所以不存在等待顺序执行问题。 Timer方法说明Timer(inter...
      99+
      2023-01-28
      threading.Timer()定时器 threading.Timer()定时任务
    • oracle数据库定时任务怎么写出来
      可以通过以下三种方法编写 oracle 数据库定时任务:使用 dbms_scheduler 包创建 scheduler 存储过程和作业。使用 oracle scheduler 服务创建凭...
      99+
      2024-04-18
      oracle
    • MySQL定时任务
      1、事件概述 在MySQL 5.1中新增了一个特色功能事件调度器(Event Scheduler),简称事件。它可以作为定时任务调度器,取代部分原来只能用操作系统的计划任务才能执行的工作。另外,更值得一提的是,MySQL的事件可以实现每秒钟...
      99+
      2023-08-16
      mysql 数据库 linux
    • Java-定时任务
      文章目录 补充:cron表达式基本知识方式一:使用sleep方法方式二:JDK Timer和TimerTask方式三:JDK ScheduledExecutorService方式四: Spri...
      99+
      2023-09-23
      java spring 开发语言 springboot
    • java定时任务时间怎么设置
      在Java中,可以使用`java.util.Timer`和`java.util.TimerTask`类来设置定时任务的时间。首先,创建一个继承自`TimerTask`的子类,重写`run()`方法,定义定时执行的任务。然后,创建一个`T...
      99+
      2023-08-11
      java
    • jenkins定时任务时间怎么设置
      在Jenkins中设置定时任务时间可以通过Cron表达式来实现。Cron表达式是一种用于指定定时任务执行时间的语法,它由6个字段组成...
      99+
      2024-03-14
      jenkins
    • Python定时任务
      在项目中,我们可能遇到有定时任务的需求。其一:定时执行任务。例如每天早上 8 点定时推送早报。其二:每隔一个时间段就执行任务。比如:每隔一个小时提醒自己起来走动走动,避免长时间坐着。今天,我跟大家分享下 Python 定时任务的...
      99+
      2023-01-31
      Python
    • oracle定时任务时间怎么设置
      Oracle数据库中的定时任务可以通过使用DBMS_SCHEDULER包来设置。您可以使用以下语法来创建一个定时任务: BEGIN ...
      99+
      2024-04-09
      oracle
    • JavaScript实现手写原生任务定时器
      功能介绍 定时器顾名思义就是在某个特定的时间去执行一些任务,现代的应用程序早已不是以前的那些由简单的增删改查拼凑而成的程序了,高复杂性早已是标配,而任务的定时调度与执行也是对程序的基...
      99+
      2024-04-02
    • 云服务器定时任务怎么做
      云服务器定时任务的实现原理非常简单,主要是通过使用云服务器上的定时任务管理器(如Timely、MyTask)来实现。这些定时任务管理器可以按照时间、事件等条件来设置定时任务的执行时间和触发条件。用户可以根据自己的需求来设置不同的定时任务,以...
      99+
      2023-10-28
      怎么做 服务器
    • 云服务器定时任务
      云服务器定时任务是一种云服务器服务,用于在云服务器上执行定时任务,例如监控任务(例如CPU使用率、磁盘使用率等)或关闭云服务。下面是云服务器定时任务的一些常见实现: CPU使用率监控(CPU Flooding):该任务通过监控服务器内的...
      99+
      2023-10-27
      服务器
    • SpringBoot定时任务怎么实现
      这篇文章主要讲解了“SpringBoot定时任务怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SpringBoot定时任务怎么实现”吧!SpringBoot定时任务主要由两个注解完成...
      99+
      2023-06-05
    • python怎么实现定时任务
      这篇文章主要介绍python怎么实现定时任务,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!用Python实现定时任务有些时候我们需要每隔一段时间就要执行一段程序,或者是往复循环执行某一个任务。比如博主在上篇文章讲的爬...
      99+
      2023-06-14
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作