【问题标题】:Delayed job: Set max run time of job , not the worker延迟作业:设置作业的最大运行时间,而不是工作人员
【发布时间】:2017-04-03 12:02:19
【问题描述】:

我有以下代码:

Converter.delay.convert("some params")

现在我希望这项工作最多运行 1 分钟。如果超过,延迟作业应该引发异常。

我试过设置

Delayed::Worker.max_run_time = 1.minute 

但它似乎在工作人员上设置了超时,而不是在工作上。

转换器类在 RAILS_ROOT/lib/my_converter.rb 中定义

【问题讨论】:

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


    【解决方案1】:

    作业本身超时

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

    【讨论】:

    【解决方案2】:
    Delayed::Worker.max_run_time=1.minute
    

    这是分配给工人的每项任务的最长时间。任何任务的执行都需要超过指定的时间,我们会引发异常。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-11
      • 2011-10-22
      • 1970-01-01
      • 2012-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多