新手问题 perform is class method in sidekiq?

xiaoronglv · January 02, 2014 · Last by xiaoronglv replied at January 02, 2014 · 2474 hits
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

谢谢楼上三位同学。

You need to Sign in before reply, if you don't have an account, please Sign up first.