【问题标题】:delayed_job vs cron for long-running tasks对于长时间运行的任务,delayed_job vs cron
【发布时间】:2013-02-25 01:37:15
【问题描述】:

每个插入数据库的Thing 都有一个archive 属性。当设置为 0 时,什么都不会发生。但是,如果不是,我希望将其添加到要处理的队列中。

存档Thing 可能需要 3 到 30 秒,因为发送和处理了大量请求。所以我的问题是我是否做到了:

  1. Thingarchive 设置为 1 时,将其放入队列以每隔一段时间(每 15 分钟左右)由 Rake 任务处理,然后将 archive 属性设置为2、阻止它再次被处理
  2. Thing 上创建一个do_archive 方法,并在保存时执行self.delay.do_archive,并让delayed_job 为我处理所有这些

有些Things 不需要处理,归档也不是时间紧迫的事情。我的直觉是delayed_job 可能是一个更好的主意,因为它不是特定时间的,它只是通过队列而不是每天午夜运行脚本。

【问题讨论】:

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


    【解决方案1】:

    我认为您在最后一段中已经非常清楚了。如果它是时间相关而不是事件驱动的,那么 cron 更有意义。但是如果有一个事件发生并且可以排队,并且它不依赖于时间,那么使用后台作业。

    您可能需要考虑的一件事是实际的消息传递系统是否更有意义。虽然像RabbitMQ 这样的东西对于你今天的情况来说可能有点过分,但还有其他更简单的选择。 SidekiqResque 是两个流行的选项,可让您更好地控制后台作业,并提供 delay_job 的简单性和消息传递系统的稳健性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-01
      • 1970-01-01
      • 2014-06-22
      • 2012-08-13
      • 2022-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多