基于 Go 语言的任务调度工具库

科技   2024-10-23 19:30   北京  

大家好,又见面了,我是 GitHub 精选君!

背景介绍

在软件开发中,任务调度是开发中不可或缺的一环。无论是数据备份、报告生成还是定时发送通知等任务,都需要一个可靠的调度系统来确保它们可以按照预定的时间准时执行。然而,传统的任务调度方案往往过于繁琐或者依赖重,对于使用 Go 语言的开发者来说,一个简单、高效、易于集成的调度解决方案显得尤为重要。

今天要给大家推荐一个 GitHub 开源项目 gocron,该项目在 GitHub 有超过 5.5k Star。

一句话介绍该项目:Easy and fluent Go cron scheduling.

项目介绍

gocron 是一个基于 Go 语言的任务调度包,它允许你以最简洁的方式安排 Go 函数在预定的时间间隔内运行。作为 jasonlvhit/gocron 的一个分支,gocron 继承了其简洁易用的特点,并在此基础上进行了优化与扩展。

它不仅支持简单的定时任务,还支持随机间隔、crontab 表达式、限制并发执行数量等高级功能,几乎可以满足所有定时任务调度的需求。此外,gocron 还内置了事件监听、分布式锁、日志记录等特性,使得任务调度更加灵活和可控。

如何使用

首先,需要使用 Go 包管理工具安装 gocron

go get github.com/go-co-op/gocron/v2

然后,你可以在代码中引入 gocron 并开始使用:

package main

import(
  "fmt"
  "time"
  "github.com/go-co-op/gocron/v2"
)

func main(){
    s, err := gocron.NewScheduler()
    if err !=nil{
      // handle error
    }

    j, err := s.NewJob(
        gocron.DurationJob(10*time.Second),
        gocron.NewTask(func(a string, b int){
                fmt.Println(a, b)
        },
        "hello",1,
        ),
    )
    if err !=nil{
      // handle error
    }
    fmt.Println(j.ID())
    s.Start()

    // when you're done, shut it down
    err = s.Shutdown()
    if err !=nil{
      // handle error
    }
}

项目推介

无论是小型项目还是大规模企业级应用,gocron 都能够提供出色且可靠的任务调度解决方案。

以下是该项目 Star 趋势图(代表项目的活跃程度):

更多项目详情请查看如下链接。

开源项目地址:https://github.com/go-co-op/gocron

开源项目作者:go-co-op

关注我们,一起探索有意思的开源项目。

点击如下卡片后台回复:加群与技术极客们一起交流人工智能、开源项目,一起成长。如果你正在寻求开源项目推广、DevOps、AIGC 大模型、软件开发等领域的付费服务,可参考推文了解详情。

读者专属插件:github.com/ZhuPeng/github_linker

GitHub精选
分享 GitHub 上有意思的开源项目和人。
 最新文章