延迟工作:设置工作的最长运行时间,而不是工人

时间:2016-11-19 20:05:40

标签: ruby ruby-on-rails-3 delayed-job

我有以下代码:

Converter.delay.convert("some params")

现在我想让这份工作最多运行1分钟。如果超出,延迟的工作应该引发异常。

我尝试过设置

Delayed::Worker.max_run_time = 1.minute 

但似乎它会对工作人员设置超时,而不是在工作中。

转换器类在RAILS_ROOT / lib / my_converter.rb

中定义

2 个答案:

答案 0 :(得分:0)

工作本身超时

require 'timeout'

class Converter
  def self.convert(params)
    Timeout.timeout(60) do
      # your processing
    end
  end
end

答案 1 :(得分:0)

Delayed::Worker.max_run_time=1.minute

给予工人的每项任务的最长时间。任何任务的执行都需要超过指定我们将异常引发为。

 execution expired (Delayed::Worker.max_run_time is only 1 minutes)

工人继续运行并处理下一个任务。