2013-03-09 83 views
0

插入到数据库中的每个Thing都具有archive属性。当设置为0时,什么都不会发生。但是,如果不是,我希望它被添加到要处理的队列中。delayed_job vs cron用于长时间运行的任务

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

  1. Thing具有archive设置为1,把它放在一个队列可以通过Rake任务,每隔一段时间进行处理(每15分钟左右),和然后有archive属性设置为2,被再次
  2. 加工制作一个do_archive方法上Thing,和保存时,做self.delay.do_archive停止,并让delayed_job处理所有这一切对我来说

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

回答

1

我觉得你在你最后的段落中几乎是固定的。如果它是依赖时间而不是事件驱动的,那么cron更有意义。但是,如果发生了一个事件并且可以将其排队,并且它不是时间相关的,那么请使用后台作业。

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

相关问题