7

我正在使用延迟作业来管理后台工作。
但是,我有一些需要定期执行的任务。例如,每小时、每天或每周。

现在,当我执行任务时,我会创建一个新任务,以便在一天/一周/一个月内执行。

不过我不是很喜欢。如果出于任何原因,任务没有完全执行,我们不会创建下一个,我们可能会失去任务的执行。

您如何在 Rails 应用程序中管理此类事情(工作延迟)以确保您的常规任务列表保持正确?

4

2 回答 2

5

如果您可以访问 Cron,我强烈推荐无论何时

http://github.com/javan/无论何时

您可以指定要运行的内容以及在 dead simple ruby​​ 中以什么频率运行,以及何时提供 rake 任务以将其转换为 crontab 并更新系统的 crontab。

如果您无法访问频繁的 cron(就像我没有,因为我们在 Heroku 上),那么 DJ 是您的最佳选择。

你有几个选择。

  1. 做你正在做的事。DJ 将重试每个任务一定次数,所以你有一些宽大处理

  2. 将创建下一个 DJ 作业的代码放在确保块中,以确保即使在异常或其他不良事件之后也能创建它

  3. 创建另一个定期运行的 DJ,检查以确保存在适当的 DJ,如果不存在则创建它们。当然,这和其他选项一样容易出错,因为监视器和实际的 DJ 都在同一个环境中运行,但这是有问题的。

于 2009-10-28T13:46:27.617 回答
1

有什么特别的原因为什么您不会将 cron 用于此类事情吗?或者可能是像rufus-scheduler这样更红的东西,它非常易于使用且非常可靠。

如果您不需要排队,我认为这些工具是一种可行的方法。

于 2009-10-28T13:38:46.527 回答