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
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
include Sidekiq::Worker
我们定义的 perform 方法是实例方法,是 Sidekiq 将队列中的 job 分配给 Processor 后,在 Processor 中调用的 https://github.com/mperham/sidekiq/blob/master/lib/sidekiq/processor.rb#L49
谢谢楼上三位同学。