Golang 定时任务管理

本文介绍了一种基于Golang Crontab的Crontab Job Manager,旨在满足更复杂的定时任务需求,如任务失败控制、单任务执行限制、状态监控等。通过任务接口和钩子函数实现任务管理,并探讨了实现过程中的挑战和缺陷。
摘要由CSDN通过智能技术生成

本文基于Golang Crontab 实现了一个Crontab Job Manager。更加容易使用,同时也能够满足更加复杂的场景。

仓储地址, 如果有用,欢迎点赞,欢迎讨论,欢迎找茬。

需求

在开发中,经常遇到一些需要定时任务的场景。各个语言都有定时语言的库,Golang Cron 提供了Crontab Golang语言版本。这个库非常不错,提供最基本的定时任务编排的功能。但是一些复杂需求无法满足,比如

  • 任何定时任务都有可能失败,失败了就panic了,这样非常不友好。最起码能够让我控制,失败是重试还是停止
  • 某些任务执行周期要10s, 而用户设置的5s一执行,我能不能保证任何时间这个任务只执行一次
  • 我想实时的看到任务的状态,比如是不是在运行?下次运行时间?上次运行时间?
  • 我想看到任务执行了多少次,成功了多少次
  • 我想要限制最大任务数量,比如超过10个任务在执行,不运行新的任务执行
  • 任务执行完了可以告诉我逻辑上有错误,还是有结果。我还可以加上一些钩子函数来处理任务执行的结果

以上的需求都非常常见,可惜这个库都不支持^_^.

完全没用的例子

复杂定义任务的场景模型抽象出来大概也就是下面几个功能点,这个没用的例子可以很好的体现出来

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值