我正在尝试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对象的生命周期一起走多远?
答案 0 :(得分:1)
事实证明,resque worker不会对它将触发的after_create事件负责。这些事件将传递给rails实例。
以下是答案:https://github.com/defunkt/resque/issues/483#issuecomment-3396215