【问题标题】:When does the resque worker job stops in ActiveRecord object lifecycle?在 ActiveRecord 对象生命周期中,resque worker 作业何时停止?
【发布时间】:2011-12-29 09:05:01
【问题描述】:

我正在尝试 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

Message 创建后,有 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 worker 的生命周期是在消息创建后立即结束,还是一直持续到消息模型中的 after_create 方法完成后?换句话说,resque worker 会随着 ActiveRecord 对象的生命周期跟踪多远?

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 虽然这在理论上可以回答问题,it would be preferable 在此处包含答案的基本部分,并提供链接以供参考。
    猜你喜欢
    • 2013-12-04
    • 2016-10-17
    • 2016-06-08
    • 2019-12-01
    • 1970-01-01
    • 2011-04-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多