ruby-on-rails - 定期延迟工作

标签 ruby-on-rails ruby cron delayed-job

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

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

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

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

最佳答案

如果你可以访问 Cron,我强烈推荐 Whenever

http://github.com/javan/whenever

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

如果您无法访问频繁的 cron(就像我一样,因为我们在 Heroku 上),那么 DJ 是您的不二之选。

您有几个选择。

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

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

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

关于ruby-on-rails - 定期延迟工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1636509/

相关文章:

jquery - ror 中使用 Paperclip 进行多次上传

ruby-on-rails - 无法在 Ubuntu 下删除 Rails

ruby-on-rails - 在 ruby​​ 中看一个目录

php - Cron 作业不运行

ruby-on-rails - Rails 3 会移除 Metal 吗?

ruby-on-rails - Postgresql.app 与 Homebrew

ruby-on-rails - 在 Rails 中的另一列之前添加一列

ruby - 如何在 ruby​​/curb 的 url 超时时退出异步调用

php - Laravel5.2 调度 :run don't work with cron job

php - PHP逻辑每日更新