使用delayed_job重复计划

Zab*_*bba 4 scheduled-tasks delayed-job ruby-on-rails-3

是否可以使用delayed_job执行以下操作:

  1. 定义一个名为的类 Tasks

  2. 每5分钟后在任务中运行一个方法: Tasks.do_processing

  3. 当接下来的5分钟周期来临时,然后运行Tasks.do_processing 如果以前 do_processing已经完成

这是我必须自己创建的东西,还是delayed_job(或其他一些gem /插件)可以做到这一点?

PS.我知道操作系统级别的cron作业,但是如果我使用它,则意味着每次cron"触发"它都会重新加载整个Rails环境,而delayed_job只需要加载一次.

Mic*_*ley 5

您可以考虑创建一个Rake任务或其他类似的独立进程来处理这个功能,然后使用守护进程将其包装起来:

什么是守护进程?

守护进程提供了一种简单的方法来包装现有的ruby脚本(例如自编写的服务器)作为守护进程运行,并由简单的启动/停止/重启命令控制.

如果需要,还可以使用守护进程在守护进程中运行ruby代码块,并从主应用程序控制这些进程.

除了这个基本功能外,守护进程还提供许多高级功能,例如异常回溯和日志记录(如果您的ruby脚本崩溃)以及监视和自动重启您的进程(如果它们崩溃).

  • 我同意这是一个糟糕的名字选择.不需要downvote tho. (3认同)
  • 由于该库的名称选择太差而导致文档难以阅读并理解它正在做什么.这就像命名数据库接口库"driver". (2认同)
  • @Leopd:布兰登的错是怎么回事? (2认同)

kar*_*res 5

如果你想做类似的事情:

class MyJob

  run_every 1.day

  def perform
    # code to run ...
  end

end
Run Code Online (Sandbox Code Playgroud)

然后试用这段代码:https://gist.github.com/1024726