Rails中的Delayed Job与Cron有什么区别?

3

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

  • 在未来的某个时间创建活动(例如发布到Twitter)
  • 定期爬取某些网站或下载Tweets

我正在考虑使用DelayedJob gem或Whenever gem来处理计划任务。在这些情况下,哪一个更好?

感谢任何建议。

2个回答

4

在未来的某个时间创建活动(例如发布推文)

如果这是对事件/用户操作的响应,则后台任务是理想选择,因为它不是定期安排。Ruby toolbox似乎更喜欢Resque和Sidekiq而不是delayed job,所以在决定之前请查看它们。

定期爬取某些网站或下载推文

与上述相反,如果这是定期安排的事件,则cron作业是理想选择。使用whenever没有问题,但请确保对作业进行某种形式的监控,以便在出现问题时通知您。


好的,谢谢。我应该能够在我的PosgreSQL数据库旁边使用Redis来处理Sidekiq,不是吗? - kmaci

2
创建活动时,我肯定会使用后台作业来完成(即PostToTwitterJob)。我更喜欢使用Sidekiq而不是DelayedJob,因为delayed_job似乎已经不再更新了。如果你想要在将来的某个特定时间执行该作业,请查看sidekiq的文档
至于爬取数据,我会同时使用两种方法。您的爬虫应该是一个后台作业(即TweetsCrawlerJob),并且您可以使用whenever每小时启动一次。

1
我想澄清一下,DelayedJob 目前仍在此处积极维护: https://github.com/collectiveidea/delayed_job。截至 Rails 5.2.1 版本,它仍被列为 Active Job 适配器之一: https://api.rubyonrails.org/classes/ActiveJob/QueueAdapters.html。 - chemturion

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接