【go 定时调度框架】你知道几种go语言定时调度框架?

这篇具有很好参考价值的文章主要介绍了【go 定时调度框架】你知道几种go语言定时调度框架?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Go语言中有很多类似Python apscheduler 的定时调度框架,其中比较流行的有以下几个:

  • cron:
    一个基于Cron表达式的定时任务库,可以精确到秒级。它提供了简单易用的API来定义和管理定时任务,支持任务暂停、恢复、删除等操作,同时还能够在多个节点之间共享状态信息。
    官方网站:https://pkg.go.dev/github.com/robfig/cron
  • go-crontab:
    一个轻量级的定时调度库,也是基于Cron表达式的。它支持多种调度方式,包括分布式调度、集群调度,同时还提供了Web控制台和RESTful
    API接口,非常方便使用。 官方网站:https://github.com/lisijie/go-crontab
  • jobrunner:
    一个简单易用的定时任务库,它支持按照时间周期或按照固定时间点执行任务。除此之外,还支持异步任务、任务重试、延迟任务等功能。
    官方网站:https://github.com/bamzi/jobrunner
  • gocron: 另一个基于Cron表达式的定时任务库,它可以让你以链式调用的方式定义任务,并且支持任务组、任务优先级等功能。
    官方网站:https://pkg.go.dev/github.com/go-co-op/gocron

这些库使用起来都比较简单,你可以根据自己的需求和喜好选择其中一个来使用。因为每个定时框架都有其自身的优点和适用场景。以下是每个框架的一些特点供您参考:

1、cron
得到广泛的使用和测试。
评测结果表明,与其他相比,它拥有最高的调度准确性,尤其在较高负载下。
它也有宽松的开源许可证,允许你做任何你想做的事情。
2、go-crontab
可以运行多个实例(master/slave)并支持分布式部署。
易于集成,并提供了控制台和API接口。
在Go语言中编写,易于维护和扩展。
3、jobrunner
拥有丰富的功能,包括异步任务、任务重试、延迟任务等。
具有充分的单元测试和文档支持。
代码简单而直观。
4、gocron
支持链式调用,非常易于使用。
可以定义任务组、任务优先级等。
在调度方面表现良好,但没有经过广泛测试。

总结:因此,选择哪个库主要取决于您的需求和偏好。如果你需要更高的调度准确性和稳定性,那么cron可能是一个不错的选择;如果你需要分布式调度和控制台支持,那么go-crontab可能更适合你。而如果你需要更多的功能和灵活性,那么jobrunner可能更适合你。

下面用go语言cron定时任务库写一个例子,每分钟输出hello,world

package main

import (
	"fmt"
	"time"

	"github.com/robfig/cron"
)

func main() {
	c := cron.New()
	c.AddFunc("*/60 * * * *", func() { // 每分钟执行一次
		fmt.Println("hello, world")
	})
	c.Start()

	// 运行 5 分钟后停止
	time.Sleep(5 * time.Minute)
	c.Stop()
}

在这个例子中,我们首先创建了一个 cron.Cron 实例,并使用 AddFunc() 方法添加了一个定时任务。该方法接受两个参数:时间表达式和要执行的函数。在本例中,我们使用 */60 * * * * 表示每分钟都会执行一次。

最后,我们使用 Start() 方法启动定时器并等待 5 分钟后停止它。在每次运行时,程序将输出 “hello, world”。文章来源地址https://www.toymoban.com/news/detail-557895.html

到了这里,关于【go 定时调度框架】你知道几种go语言定时调度框架?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 5大热门基于go语言的web框架,别再只知道springmvc

    公众号: MCNU云原生 ,文章首发地,欢迎微信搜索关注,更多干货,第一时间掌握! Spring MVC在Java web领域中首屈一指,而作为云原生时代的标准语言之一,Go语言自然也衍生出来不少优秀的web框架。今天给大家分享5个流行的基于Go语言的web框架,他们有什么区别,应该如何选

    2024年02月07日
    浏览(28)
  • Java定时任务、自动化任务调度

    Java提供了多种方式来实现定时任务,使得开发人员能够在指定的时间间隔或固定时间点执行特定的任务。本文将介绍Java中实现定时任务的几种常用方法,并探讨它们的优势和适用场景。 Java中的Timer类是最早引入的定时任务工具,它可以用于执行一次性或重复性的定时任务。

    2024年02月16日
    浏览(39)
  • 分布式任务调度,定时任务的处理方案

    适用场景: Spring 定时任务是 Spring 框架提供的一种轻量级的任务调度方案,它的特点是简单易用、轻量级。Spring 定时任务的执行是在 单个节点 上进行的,如果需要分布式任务调度,需要自己实现相应的解决方案。 1.导入依赖版本自己控制 2.启动类加上@EnableScheduling 3.编写业

    2023年04月14日
    浏览(46)
  • Linux 定时任务调度(crontab)

    Crontab命令用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。 可以使用Crontab定时处理离线任务,比如每天凌晨2点更新数据等,经常用于系统任务调度。 一般Linux系统中都会装有Crontab,如果没有安装可以使

    2024年02月07日
    浏览(66)
  • Linux 实操篇--定时任务调度

    crontab 进行定时任务的设置 概述 任务调度:是指系统在某个时间执行的特定的命令或程序。 任务调度分类:1.系统工作:有些重要的工作必须周而复始地执行。如病毒扫描等 个别用户工作:个别用户可能希望执行某些程序,比如对mysql 数据库的备份。 示意图 基本语法 cron

    2024年02月07日
    浏览(44)
  • Linux p15 定时任务调度

    【学习课程】:【【小白入门 通俗易懂】2021韩顺平 一周学会Linux】 https://www.bilibili.com/video/BV1Sv411r7vd/?p=14share_source=copy_webvd_source=2c07d62293f5003c919b2df9b2e0549e crontab 进行定时任务的设置 概述 任务调度:是指系统在某个时间执行的特定的命令或程序。 任务调度分类: 系统工作:

    2024年02月05日
    浏览(32)
  • 你知道怎么实现定时任务吗?

    诸位读者都知道笔者写东西都是用到才写,笔者的学习足迹自从参加工作之后就是 非系统 学习了,公司里源代码只要有笔者不知道的技术细节,笔者就会仔细的研究清楚,笔者是不喜欢给自己留下问题的那种学习习惯。 笔者最近负责了消息发送的一些业务需求,由于笔者工

    2023年04月23日
    浏览(46)
  • linux-crontab每分钟定时执行/定时任务调度

    本文讲解linux上如何调用定时任务,如每分钟打印日志,每日24点执行日志切割脚本等等。 在Linux系统中,crontab命令是一个用于执行定时任务的命令, crond(crontab)是系统默认自带的定时服务 。我们可以通过编辑crontab文件来设置定时任务,使系统可以自动按照设定的时间和频率

    2024年02月06日
    浏览(43)
  • Spring Boot如何实现定时任务调度?

    Spring Boot提供了非常方便的方式来实现定时任务调度,我们可以使用Spring框架自带的 @Scheduled 注解来实现。在本文中,我们将介绍如何使用 @Scheduled 注解进行定时任务调度。 在Web应用程序中,我们经常需要定时执行一些任务,例如定时清理缓存、定时发送邮件等。这些任务通

    2024年02月07日
    浏览(37)
  • Scala第二十章节(Akka并发编程框架、Akka入门案例、Akka定时任务代码实现、两个进程间通信的案例以及简易版spark通信框架案例)

    章节目标 理解Akka并发编程框架简介 掌握Akka入门案例 掌握Akka定时任务代码实现 掌握两个进程间通信的案例 掌握简易版spark通信框架案例 1. Akka并发编程框架简介 1.1 Akka概述 Akka是一个用于构建高并发、分布式和可扩展的基于事件驱动的应用工具包。Akka是使用scala开发的库,

    2024年04月11日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包