resque工作程序作业何时在ActiveRecord对象生命周期中停止?

时间:2011-12-29 09:05:01

标签: activerecord ruby-on-rails-3.1 resque

我正在尝试resque,但不确定resque worker实例的生命周期。让我们说我的任务设置如下:

class User

  def self.start_job(str)
    Resque.enqueue(Job, str)
  end

end

class Job

  def self.perform(str)
    Message.create(:user => str.split(" ")[0], 
                   :message => str.split(" ")[1])
  end

end

创建消息后,会有after_create挂钩调用另一个长时间运行的任务:

class Message < ActiveRecord::Base

  after_create (or after_commit) :do_a_ridiculous_long_task

  def do_a_ridiculous_long_task
    do_something
  end

end

resque工作者的生命周期是在创建消息后立即结束,还是在消息模型中的after_create方法完成之后才继续?换句话说,resque worker与ActiveRecord对象的生命周期一起走多远?

1 个答案:

答案 0 :(得分:1)

事实证明,resque worker不会对它将触发的after_create事件负责。这些事件将传递给rails实例。

以下是答案:https://github.com/defunkt/resque/issues/483#issuecomment-3396215