基于 Go 的任务调度工具库

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

背景介绍

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

今天要给大家推荐一个 GitHub 开源项目 gocron,该项目在 GitHub 有超过 5.6k 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

以下是参与项目建设的所有成员:

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


更多精彩请扫码关注如下公众号。

Written on September 5, 2024