0

我正在使用延迟方法在我的控制器中创建延迟作业,如下所示:

JobProcessor.delay(:run_at => Time.now).process_job(options)

现在在我正在做的 process_job 方法中

chunks = options[:collection].each_splice(10).to_a
chunks.each do |chunk|
  self.delay(:run_at => Time.now).chunk_job
end

stack level too deep当我向 URL 发送请求时,这给了我错误

可能是什么问题?请帮忙。

4

1 回答 1

1

通过进行一些更改,我能够使它对我有用。

  • 我将外部方法更改process_job为实例方法
  • 并保持其余代码不变。

所以现在我的代码看起来像

JobProcessor.new.process_job(options)

在控制器中,在JobProcessor我的类中

class JobProcessor
  def process_job(options)
    chunks = options[:collection].each_splice(10).to_a
    chunks.each do |chunk|
      self.class.delay(:run_at => Time.now).chunk_job(options)
    end
  end
  handle_asynchronously :process_job, :run_at => Proc.new { 2.seconds.from_now }

  def self.chunk_job(options)
    # perform chunk job here
  end
end

这对我有用。

于 2012-10-04T09:16:08.520 回答