使用delay_job的定期计划

问题描述

| 是否可以使用delay_job执行以下操作: 定义一个名为“ 0”的类 每隔5分钟运行一次“任务”中的方法
Tasks.do_processing
当下一个5分钟的周期到来时,仅在上一个
do_processing
完成后才运行
Tasks.do_processing
这是我必须自己创建的东西,还是delay_job(或其他一些gem / plugin)可以做到这一点? 附言我知道OS级的cron作业,但是如果我使用它,那意味着每次cron“ fired”都会重新加载整个Rails环境,而delay_job只需要加载一次。     

解决方法

        您可以考虑创建一个处理此功能的Rake任务或其他类似的独立进程,然后将其包装到守护程序中:   什么是守护程序?      守护程序提供了一种简单的包装方法   现有的ruby脚本(例如   自行编写的服务器)作为   守护程序,并由简单的控制   启动/停止/重新启动命令。      如果需要,还可以使用守护程序   在守护程序中运行红宝石代码块   过程并控制这些过程   从主应用程序。      除了这个基本功能,   守护程序提供许多高级功能   如异常回溯和记录   (以防您的ruby脚本崩溃)和   监视并自动重启   您的流程崩溃了。     ,        如果您想做类似的事情:
class MyJob

  run_every 1.day

  def perform
    # code to run ...
  end

end
然后尝试以下代码:https://gist.github.com/1024726     ,        在DJ 2.1的生产环境中使用该版本已有一段时间。没有黑客,使用内置在钩子中的延迟作业。只要确保将名为“'queue \'的列添加到延迟的作业表中,我相信这还是DJ 3添加到该表中的内容。     ,        以为我可以补充一点,delay_job_recurring gem是@kares \答案的要点的扩展。 用法示例:
class MyTask
  include Delayed::RecurringJob
  run_every 1.day
  run_at \'11:00am\'
  timezone \'US/Pacific\'
  queue \'slow-jobs\'
  def perform
    # Do some work here!
  end
end
并安排它。在Rails应用中,您可以将其放在初始化程序中:
MyTask.schedule!
    ,        周期性的延迟工作: http://rifkifauzi.wordpress.com/2010/07/29/8/     ,        您可以使用https://github.com/codez/delayed_cron_job(这是“延迟作业”插件)来设置定期作业。