我的任务需要每10分钟重复一次。
我想使用delayed_job
,但我找不到教程如何正确使用它来解决我的问题。例如
class A
def print
p Time.now
end
end
我应该在哪里上课?
那我应该在哪里调用这个方法(print
),所以它每10分钟重复一次?
它不依赖于用户,不依赖于数据库中的条目。
感谢。
答案 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,它使用线程而不是进程。这样可以在更少的资源使用和数据库命中的情况下加快处理速度。