Ruby on rails 从延迟的工作开始

Ruby on rails 从延迟的工作开始,ruby-on-rails,delayed-job,Ruby On Rails,Delayed Job,我有一个任务需要每10分钟重复一次。 我想使用delayed\u job,但我找不到如何正确使用它来解决我的问题的教程。比如说 class A def print p Time.now end end 我该在哪里上课? 那么我应该在哪里调用这个方法(print),所以它每10分钟重复一次? 它不依赖于用户,也不依赖于数据库中的条目 谢谢。您的目标要求更多类似的东西,它基本上是基于UNIX的系统中crontab文件的生成器。如果您希望节省资源(即使用rails;因为您已

我有一个任务需要每10分钟重复一次。 我想使用
delayed\u job
,但我找不到如何正确使用它来解决我的问题的教程。比如说

 class A
   def print
     p Time.now
   end
 end
我该在哪里上课? 那么我应该在哪里调用这个方法(
print
),所以它每10分钟重复一次? 它不依赖于用户,也不依赖于数据库中的条目


谢谢。

您的目标要求更多类似的东西,它基本上是基于UNIX的系统中crontab文件的生成器。

如果您希望节省资源(即使用rails;因为您已经使用rails标记了您的问题),我会尽量避免使用它

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

这是一块可以使用的宝石

# config/initializers/chrons.rb

require 'rufus-scheduler'

scheduler = Rufus::Scheduler.new

scheduler.every '3m' do
  p Time.now  
end
如果你的工作需要很长时间来处理(如发送电子邮件、处理图像等),这时你需要延迟工作


有一个著名的gem,它可以帮助实现这一点,或者我最近写的gem,它使用线程而不是进程。这使得处理速度更快,资源使用率和数据库命中率更低。

延迟作业与延迟作业有什么关系?即,当存在与数据库相关联的操作时,应使用延迟作业?如果希望web操作触发长时间运行的任务(比如5分钟),则使用延迟作业。web操作不应花费5分钟完成(因为用户会认为您的web应用程序不知何故已损坏)。因此,您将作业交给后台进程,该进程由延迟的作业创建和维护。