【发布时间】:2016-07-23 19:17:35
【问题描述】:
我的应用程序(在 Rails 中)应该提供两个主要任务:
- 在未来给定时间创建活动(例如发布到 Twitter)
- 定期抓取某些网站或下载推文
我正在考虑使用 DelayedJob gem 或每当 gem 执行 cron 任务。在这些情况下哪个更好?
感谢您的建议。
【问题讨论】:
标签: ruby-on-rails cron delayed-job whenever
我的应用程序(在 Rails 中)应该提供两个主要任务:
我正在考虑使用 DelayedJob gem 或每当 gem 执行 cron 任务。在这些情况下哪个更好?
感谢您的建议。
【问题讨论】:
标签: ruby-on-rails cron delayed-job whenever
为了创建活动,我肯定会使用后台作业来执行此操作(即PostToTwitterJob)。我更喜欢Sidekiq 而不是DelayedJob,因为delayed_job 似乎不再处于活动状态。如果您希望在未来的特定时间执行该工作,请查看sidekiq's documentation。
至于爬行,我会同时使用。您的爬虫将是一项后台作业(即TweetsCrawlerJob),您可以使用whenever 每小时启动一次。
【讨论】:
DelayedJob 在这里得到积极维护:github.com/collectiveidea/delayed_job。从 Rails 5.2.1 开始,它仍被列为活动作业适配器:api.rubyonrails.org/classes/ActiveJob/QueueAdapters.html
在未来给定时间创建活动(例如发布到 Twitter)
如果这是对事件/用户操作的响应,那么后台任务将是理想的,因为它不是常规计划。 Ruby toolbox 似乎更喜欢 Resque 和 Sidekiq 而不是延迟的工作,所以在解决之前看看那些。
定期爬取某些网站或下载推文
与上述相反,如果这是定期安排的事件,那么 cron 作业是理想的。使用whenever 并没有错,但请确保您对作业进行某种形式的监控,以便在出现问题时提醒您。
【讨论】: