2017-01-03 73 views
3

它顯示了錯誤的參數數目,但我傳遞3個參數sidekiq - 警告:引發ArgumentError:錯誤的參數數目(0給出,預計2..3)

ScannerWorker.perform_async('bob1','bob2',5) 

這裏sidekiq工人代碼

class ScannerWorker 
    include Sidekiq::Worker 

    def perform(bob1, bob2, bob3) 
    puts bob1 
    end 
end 

sidekiq版本: - 4.2.7
軌4.2.6
Redis的服務器v = 3.0.7

Sidekiq錯誤: -

2017-01-03T06:29:43.007Z 9547 TID-itjjk WARN: ArgumentError: wrong number of arguments (given 0, expected 2..3) 
2017-01-03T06:29:43.007Z 9547 TID-itjjk WARN: /home/smk/14.04/rails/projects/myappname/app/workers/scanner_worker.rb:5:in `test' 
/home/smk/14.04/rails/projects/myappname/app/workers/scanner_worker.rb:5:in `perform' 
/home/smk/14.04/rails/projects/myappname/vendor/bundle/gems/sidekiq-4.2.7/lib/sidekiq/processor.rb:158:in `execute_job' 
/home/smk/14.04/rails/projects/myappname/vendor/bundle/gems/sidekiq-4.2.7/lib/sidekiq/processor.rb:138:in `block (4 levels) in process' 
/home/smk/14.04/rails/projects/myappname/vendor/bundle/gems/sidekiq-4.2.7/lib/sidekiq.rb:36:in `block in <module:Sidekiq>' 
/home/smk/14.04/rails/projects/myappname/vendor/bundle/gems/sidekiq-4.2.7/lib/sidekiq/processor.rb:133:in `block (3 levels) in process' 
/home/smk/14.04/rails/projects/myappname/vendor/bundle/gems/sidekiq-4.2.7/lib/sidekiq/middleware/chain.rb:128:in `block in invoke' 
/home/smk/14.04/rails/projects/myappname/vendor/bundle/gems/sidekiq-4.2.7/lib/sidekiq/middleware/server/active_record.rb:6:in `call' 
/home/smk/14.04/rails/projects/myappname/vendor/bundle/gems/sidekiq-4.2.7/lib/sidekiq/middleware/chain.rb:130:in `block in invoke' 
/home/smk/14.04/rails/projects/myappname/vendor/bundle/gems/sidekiq-4.2.7/lib/sidekiq/middleware/server/retry_jobs.rb:74:in `call' 
/home/smk/14.04/rails/projects/myappname/vendor/bundle/gems/sidekiq-4.2.7/lib/sidekiq/middleware/chain.rb:130:in `block in invoke' 
/home/smk/14.04/rails/projects/myappname/vendor/bundle/gems/sidekiq-4.2.7/lib/sidekiq/middleware/server/logging.rb:11:in `block in call' 
/home/smk/14.04/rails/projects/myappname/vendor/bundle/gems/sidekiq-4.2.7/lib/sidekiq/logging.rb:32:in `with_context' 
/home/smk/14.04/rails/projects/myappname/vendor/bundle/gems/sidekiq-4.2.7/lib/sidekiq/middleware/server/logging.rb:7:in `call' 
/home/smk/14.04/rails/projects/myappname/vendor/bundle/gems/sidekiq-4.2.7/lib/sidekiq/middleware/chain.rb:130:in `block in invoke' 
/home/smk/14.04/rails/projects/myappname/vendor/bundle/gems/sidekiq-4.2.7/lib/sidekiq/middleware/chain.rb:133:in `invoke' 
/home/smk/14.04/rails/projects/myappname/vendor/bundle/gems/sidekiq-4.2.7/lib/sidekiq/processor.rb:132:in `block (2 levels) in process' 
/home/smk/14.04/rails/projects/myappname/vendor/bundle/gems/sidekiq-4.2.7/lib/sidekiq/processor.rb:174:in `stats' 
/home/smk/14.04/rails/projects/myappname/vendor/bundle/gems/sidekiq-4.2.7/lib/sidekiq/processor.rb:131:in `block in process' 
/home/smk/14.04/rails/projects/myappname/vendor/bundle/gems/sidekiq-4.2.7/lib/sidekiq.rb:35:in `block in <module:Sidekiq>' 
/home/smk/14.04/rails/projects/myappname/vendor/bundle/gems/sidekiq-4.2.7/lib/sidekiq/processor.rb:126:in `process' 
/home/smk/14.04/rails/projects/myappname/vendor/bundle/gems/sidekiq-4.2.7/lib/sidekiq/processor.rb:82:in `process_one' 
/home/smk/14.04/rails/projects/myappname/vendor/bundle/gems/sidekiq-4.2.7/lib/sidekiq/processor.rb:70:in `run' 
/home/smk/14.04/rails/projects/myappname/vendor/bundle/gems/sidekiq-4.2.7/lib/sidekiq/util.rb:17:in `watchdog' 
/home/smk/14.04/rails/projects/myappname/vendor/bundle/gems/sidekiq-4.2.7/lib/sidekiq/util.rb:25:in `block in safe_thread' 
+0

嘗試重新啓動Sidekiq ... – Jayaprakash

+0

,並嘗試重新啓動raisl服務器 – inye

回答

2

按照此步驟
*在Gemfile中提起sidekiq版本
*殺死sidekiq過程並重新啓動sidekiq

2

您需要重新啓動Sidekiq。實時代碼重新加載只適用於Sidekiq 4.2+運行Rails 5.0+

0

值得注意。我一直在研究類似的問題。

SomeWorker.perform_async(@user.id) 

    class SomeWorker 
    include Sidekiq::Worker 

    def perform(user_id) 
    puts "{user_id}" 
    end 
end 

確切地不確定爲什麼我得到參數錯誤。也許這是因爲一個實例變量,也許是一個軌道錯誤。
不過,我receated使用

$rails g sidekiq:worker SomeWorker 

的工人,看到這個*。

class SomeWorker 
    include Sidekiq::Worker 

    def perform(*args) 
    puts #some thing 
    end 
end 

通過添加astrix的一切工作完美。

快速回答:

class SomeWorker 
    include Sidekiq::Worker 

    def perform(*user_id) 
    puts #some thing 
    end 
end 
相關問題