在Rails中延迟工作与Cron

时间:2016-04-04 09:52:01

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

我的应用程序(在Rails中)应该提供两个主要任务:

  • 在未来的特定时间内创建活动(例如发布到Twitter)
  • 定期抓取某个网站或下载推文

我正在考虑使用DelayedJob gem或Whenever gem来执行cron任务。在这些情况下哪个更好?

感谢您的任何建议。

2 个答案:

答案 0 :(得分:3)

  

在未来的特定时间内创建活动(例如发布到Twitter)

如果这是对事件/用户操作的响应,那么后台任务将是理想的,因为它不是常规时间表。 Ruby toolbox似乎更喜欢Resque和Sidekiq而不是延迟工作,所以在解决之前先看看那些。

  

定期抓取某个网站或下载推文

与上述相反,如果这是一个定期安排的活动,那么cron工作是理想的。使用whenever对此没有任何问题,但请确保您对作业进行某种形式的监控,以便在出现问题时提醒您。

答案 1 :(得分:1)

为了创建活动,我肯定会使用后台工作来做到这一点(即PostToTwitterJob)。我偏好Sidekiq而不是DelayedJob,因为delayed_job似乎不再有效。如果您希望将来在特定时间执行作业,请查看sidekiq's documentation

至于爬行,我会同时使用两者。您的抓取工具将成为后台工作(即TweetsCrawlerJob),您可以使用whenever每小时启动它。