新手问题 关于 Crono 这个 Gem 使用的时候遇到的一个问题

liuliyong · 2017年08月10日 · 最后由 liuliyong 回复于 2017年08月11日 · 1224 次阅读

我的自动化测试网站需要执行定时任务,现在开始用 crono 我按照 https://github.com/plashchynski/crono,安装并且成功的在运行十几个定时任务 但是遇到了一个问题

我在 crono 配置定时任务的地方,设置了

Crono.perform(CheckBuildsAndNotifyJob, "Check Build Version", "AM").every 1.day, at: '09:30'
Crono.perform(CheckBuildsAndNotifyJob, "Check Build Version", "PM").every 1.day, at: '18:30'

有一天服务器停机一天,第二天我启动 rails 和 crono 的时候,上面两个任务同时触发,且运行了。但是并没有到运行的时间。

我感觉是不是 crono 会在某个地方记录没有执行的任务,然后在 crono 服务起来之后,尝试运行它们。

这个在 README 里面有写:

It persists job states to your database using Active Record.

所以你的猜想可能是对的。

关于“停机一段时间重启服务之后是否要执行定时任务”这件事,要依任务自身的业务需求决定。比如批量处理用户产生的数据这种任务,由于停机时间是没有数据积累的,那么定时任务也就不用执行。如果业务有一定的时效性要求,在停机恢复之后尽早重跑一次就是值得考虑的。

5long 回复

我看遍了文档,好像没有地方提到哪个参数可以 Jon 告知 是否执行因停机未执行任务,所以只能在我的脚本里面做处理了。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号