1

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

 class A
   def print
     p Time.now
   end
 end

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

谢谢。

4

2 回答 2

2

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

于 2012-07-09T08:58:27.760 回答
0

如果您希望节省资源,我会避免任何时候(即使用 rails ;因为您已使用 rails 标记了您的问题)

每当你需要做某事时加载整个 Rails 环境。如果您正在运行一个简单的 ruby​​ 脚本,它会很有用。

rufus-scheduler是要使用的 gem。

# config/initializers/chrons.rb

require 'rufus-scheduler'

scheduler = Rufus::Scheduler.new

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

如果您有一项需要很长时间才能处理的工作(即发送电子邮件、处理图像等),那么这就是您需要delayed_job 的时候。

有一个著名的 gem,delayed_job_active_record可以帮助解决这个问题,或者我最近编写的一个 gem, delayed_job_active_record_threaded,它使用线程而不是进程。这允许更快的处理,更少的资源使用和数据库命中。

于 2014-01-16T13:30:53.760 回答