我有一台服务器,我希望能够在上面安排作业,并且我需要能够指定这些作业的具体发生时间。会有很多作业。(比如向客户发送电子邮件通知)。
这听起来像是 cron 的完美工作,但是我需要能够处理停机时间。如果发生停机,我不能等到一天结束时 anacron 运行来协调所有错过的任务。
如果我有一点停机时间,我需要在启动时运行所有逾期任务。
例如:
- 任务计划于 17:36 完成
- 机器于 17:33 关闭
- 机器于 17:40 启动
- 任务现已逾期,应尽快运行。
有没有办法将 anacron 改为在启动时运行并运行所有逾期的 cron 作业?
或者,是否有其他常见的解决方案来解决这个问题?
答案1
cron/anacron 不是为容错或高可用性场景构建的。如果你的工作非常关键,我认为 Jobschedulerhttp://www.sos-berlin.com/jobscheduler-features对你来说会很有帮助。只是提醒一下,它并不容易设置,需要一点时间来熟悉,但它是安排日程的最佳工具
答案2
任何工作队列系统都应该能够做到这一点。Celery、Resque、Sidekiq、backgroundjob 等等。其中一些系统内置了此功能,其他系统则有添加按时间顺序调度的插件。