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 deepURLにリクエストを送信すると、これによりエラーが発生します

問題は何ですか?助けてください。

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 に答える