从delayed_job开始

时间:2012-07-09 08:55:30

标签: ruby-on-rails delayed-job

我的任务需要每10分钟重复一次。 我想使用delayed_job,但我找不到教程如何正确使用它来解决我的问题。例如

 class A
   def print
     p Time.now
   end
 end

我应该在哪里上课? 那我应该在哪里调用这个方法(print),所以它每10分钟重复一次? 它不依赖于用户,不依赖于数据库中的条目。

感谢。

2 个答案:

答案 0 :(得分:2)

您的目标要求https://github.com/javan/whenever之类的东西,它基本上是基于UNIX的系统中crontab文件的生成器。

答案 1 :(得分:0)

如果您希望节省资源(例如使用rails;因为您已使用rails标记了您的问题),我会避免这样做。

每当您需要执行某些操作时,每当加载整个rails环境时。如果你运行一个简单的ruby脚本,它会很有用。

rufus-scheduler是使用的宝石。

# config/initializers/chrons.rb

require 'rufus-scheduler'

scheduler = Rufus::Scheduler.new

scheduler.every '3m' do
  p Time.now  
end

如果您的工作需要很长时间才能处理(即发送电子邮件,处理图片等),那么您需要delayed_job。

有一个着名的宝石,delayed_job_active_record可以帮助我或者我最近编写的宝石delayed_job_active_record_threaded,它使用线程而不是进程。这样可以在更少的资源使用和数据库命中的情况下加快处理速度。