2017-01-03 12 views
3

それは間違った数の引数を示しますが、私は労働者コードsidekiqここsidekiq - WARN:例外ArgumentErrorを:引数の数が間違って(0を与えられたが、2..3を期待)

class ScannerWorker 
    include Sidekiq::Worker 

    def perform(bob1, bob2, bob3) 
    puts bob1 
    end 
end 
を3つの引数

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

を渡しています

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

が、これは
* sidekiqプロセスを強制終了し、注目に値するsidekiq

2

サイドキックを再起動する必要があります。ライブコードの再読み込みは、Sidekiq 4.2以降でのみ動作します。Rails 5.0+

0

を再起動します* gemfile
にsidekiqバージョンに言及し、手順に従ってください。私も同様の問題に取り組んできました。

SomeWorker.perform_async(@user.id) 

    class SomeWorker 
    include Sidekiq::Worker 

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

なぜ私は引数のエラーを取得していたのかわかりません。たぶんインスタンス変数、おそらくレールのバグのためです。
それにもかかわらず、私は*

$rails g sidekiq:worker SomeWorker 

を使用して労働者をreceatedし、これを見ました。

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 
関連する問題