delayed_job vs cron用于长时间运行的任务

时间:2013-03-09 15:01:21

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

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

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

  1. Thingarchive设置为1时,请将其放入队列以便每隔一段时间(每隔15分钟左右)由Rake任务处理,然后使用{{ 1}}属性设置为2,以阻止它再次处理
  2. archive上制作do_archive方法,保存后,Thing,让self.delay.do_archive为我处理所有这些
  3. 某些delayed_job不需要处理,归档不是时间必需品。我的直觉是Things可能是一个更好的主意,因为它不是特定于时间的,只是通过队列而不是每天午夜运行脚本。

1 个答案:

答案 0 :(得分:1)

我认为你在最后一段中几乎把它钉在了一起。如果它是依赖于时间而不是事件驱动的东西,那么cron更有意义。但是如果发生了一个事件并且可以将其排队,并且它不依赖于时间,则使用后台作业。

您可能想要考虑的一件事是实际的消息传递系统是否更有意义。虽然像RabbitMQ这样的东西对于你今天的地方可能有些过分,但还有其他更简单的选择。 SidekiqResque是两种流行的选项,可让您对后台作业进行更多控制,并提供delayed_job的简单性和邮件系统的健壮性。

相关问题