新手问题 perform is class method in sidekiq?

xiaoronglv · 2014年01月02日 · 最后由 xiaoronglv 回复于 2014年01月02日 · 2473 次阅读
class MainWorker
 def perform( user_id ) 
   User.find( user_id ).main_task
   Worker1.perform_aync( user_id ) 
   Worker2.perform_aync( user_id ) 
 end
end

请问,perform 方法是不是类方法?

因为他的调用方式是 MainWorker.perform_async

有点晕

perform_async 和 perform 不是一个方法。lz 想问什么?

perform_async 是类方法,perform 是实例方法。

perform_async 是类方法,来自于 include Sidekiq::Worker,可参考 https://github.com/mperham/sidekiq/blob/master/lib/sidekiq/worker.rb#L39

我们定义的 perform 方法是实例方法,是 Sidekiq 将队列中的 job 分配给 Processor 后,在 Processor 中调用的 https://github.com/mperham/sidekiq/blob/master/lib/sidekiq/processor.rb#L49

谢谢楼上三位同学。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号