2017-01-03 3 views
3

그것은 잘못된 인수 수를 표시하지만 3 개 인자sidekiq은 WARN

노동자 코드 sidekiq 여기
ScannerWorker.perform_async('bob1','bob2',5) 

을 전달하고 (0 주어 2..3 예상) 인수의 잘못된 번호를

class ScannerWorker 
    include Sidekiq::Worker 

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

sidekiq 버전 : - 4.2.7
레일 4.2.6
레디 스 서버 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 버전을 언급 단계에 따라
* 지적

2

사이드 키를 다시 시작해야합니다. 라이브 코드 다시로드는 Sidekiq 4.2 이상에서만 작동합니다. Rails 5.0 이상.

0

가치 sidekiq을 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