2017-01-03 74 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 
相关问题