Rails的cron任务的“delayed_job”真的吗?

delayed_job位于http://github.com/collectiveidea/delayed_job

delayed_job能否执行cron任务? 比如每天凌晨1点运行脚本。 或者每1小时运行一次脚本。

如果没有,有什么合适的gem可以做到这一点? 是否可以使用浏览器远程监控,并记录成功和错误?

我参与了一个试图使用DelayedJob来安排未来项目的项目。 它很糟糕。

相反,我建议你使用随时随地的gem:

http://github.com/javan/whenever

每当Ruby gem提供用于定义cron作业的清晰语法时。 它输出有效的cron语法,甚至可以为您编写crontab文件。 它旨在与Rails应用程序配合使用,并可与Capistrano一起部署。 每当独立工作时也是如此。

代码看起来像这样(来自github)

every 3.hours do runner "MyModel.some_process" rake "my:rake:task" command "/usr/bin/my_great_command" end every 1.day, :at => '4:30 am' do runner "MyModel.task_to_run_at_four_thirty_in_the_morning" end every :hour do # Many shortcuts available: :hour, :day, :month, :year, :reboot runner "SomeModel.ladeeda" end every :sunday, :at => '12pm' do # Use any day of the week or :weekend, :weekday runner "Task.do_something_great" end 

这是一个关于如何使用它的RailsCastvideo。

和相应的ASCIICast 。

我认为cron是一个比delayed_job更好的工具。 我以前在一个项目中使用它,它真的很擅长在后台或特定时间运行任务。 但是,对于定期发生的重复性任务,我认为cron是最好的工具。

检查何时 (和它的Railscast )轻松安排可以运行rake任务的cron作业(或者是thor或shell脚本,或其他任何东西。)你可以使用rake任务来更新你的模型,然后使用某种仪表板控制器看看各种状态。

您还可以使用ClockWork gem: https : //github.com/adamwiggins/clockwork-rails-dj

Clockwork作为单独的守护程序运行,可用于触发任何类型的作业,这些作业可以添加到作业排队系统或立即运行。

使用Delayed_Job来获得它的好处,一个可以分布在多个节点上的作业排队系统(或不是)。 使用其他东西在适当的时间将作业添加到队列中。

我正在使用rake(或者跑步者)/ cron /每当gem计划后台任务但是发现我的服务器负载非常高,因为我会不断地使用rake / runner加载rails环境。 Delayed_Job worker是你的rails守护进程,它们会一直运行,所以每次需要后台任务时你都不会经常启动Rails。

每当工作得很好。

我也喜欢rufus-scheduler

 /config/initializers/task_scheduler.rb 

然后在该文件中:

 scheduler = Rufus::Scheduler.start_new scheduler.every("1m") do DailyDigest.send_digest! end 

我最初发现这里发布了这个

我试过了,效果很好。

更新

现在我回顾那个链接,它几乎是我唯一想要为之工作的铁路公司。 他们制作了许多gem,并为社区增添了许多gem。 更不用说他们有一个庞大的团队!

我运行多个cron delayed_jobs用于夜间统计和报告生成以及以特定间隔进行数据报废。 我是这样做的:

https://aaronvb.com/articles/recurring-delayed-job-with-cron.html

我为此创建了一个gem:

https://github.com/sellect/delayed_cron

它目前适用于sidekiq和delayed_job。 希望尽快添加resque。 我知道这有点晚了,但它确实完全符合您的要求。