2017-07-15 60 views
1

我正在通過Ruby on Rails開發Web應用程序,並且我想用deliver_later發送電子郵件。無法在流浪者身上運行sidekiq

Gemfilegem sidekiq,並在config/initializer/sidekiq.rb

redis_sec = { host: '127.0.0.1' } 
Sidekiq.configure_client do |config| 
    config.redis = { url: "redis://#{redis_sec[:host]}:6379", namespace: 'sidekiq' } 
end 
Sidekiq.configure_server do |config| 
    config.redis = { url: "redis://#{redis_sec[:host]}:6379", namespace: 'sidekiq' } 
end 

最後,在config/sidekiq.yml

:pidfile: ./tmp/pids/sidekiq.pid 
:logfile: ./log/sidekiq.log 

我寫app/workers/worker_for_sidekiq.rb測試sidekiq隊列:

class WorkerForSidekiq 
    include Sidekiq::Worker 
    sidekiq_options queue: :sidekiq 
    def perform(text) 
    sleep 5 
    p text 
    end 
end 

然後,通過0123運行sidekiq對流浪者提供了一個錯誤:

ERR Syntax error, try CLIENT (LIST | KILL ip:port) 
/home/vagrant/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/redis-3.3.3/lib/redis/client.rb:121:in `call' 
/home/vagrant/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/newrelic_rpm-4.2.0.334/lib/new_relic/agent/instrumentation/redis.rb:69:in `call' 
/home/vagrant/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/redis-3.3.3/lib/redis/client.rb:104:in `block in connect' 
/home/vagrant/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/redis-3.3.3/lib/redis/client.rb:293:in `with_reconnect' 
/home/vagrant/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/redis-3.3.3/lib/redis/client.rb:100:in `connect' 
/home/vagrant/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/newrelic_rpm-4.2.0.334/lib/new_relic/agent/instrumentation/redis.rb:105:in `connect' 
/home/vagrant/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/redis-3.3.3/lib/redis/client.rb:364:in `ensure_connected' 
/home/vagrant/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/redis-3.3.3/lib/redis/client.rb:221:in `block in process' 
/home/vagrant/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/redis-3.3.3/lib/redis/client.rb:306:in `logging' 
/home/vagrant/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/redis-3.3.3/lib/redis/client.rb:220:in `process' 
/home/vagrant/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/redis-3.3.3/lib/redis/client.rb:120:in `call' 
/home/vagrant/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/newrelic_rpm-4.2.0.334/lib/new_relic/agent/instrumentation/redis.rb:69:in `call' 
/home/vagrant/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/redis-3.3.3/lib/redis.rb:251:in `block in info' 
/home/vagrant/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/redis-3.3.3/lib/redis.rb:58:in `block in synchronize' 
/home/vagrant/.rbenv/versions/2.3.0/lib/ruby/2.3.0/monitor.rb:214:in `mon_synchronize' 
/home/vagrant/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/redis-3.3.3/lib/redis.rb:58:in `synchronize' 
/home/vagrant/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/redis-3.3.3/lib/redis.rb:250:in `info' 
/home/vagrant/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/sidekiq-5.0.3/lib/sidekiq.rb:111:in `block in redis_info' 
/home/vagrant/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/sidekiq-5.0.3/lib/sidekiq.rb:95:in `block in redis' 
/home/vagrant/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/connection_pool-2.2.1/lib/connection_pool.rb:64:in `block (2 levels) in with' 
/home/vagrant/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/connection_pool-2.2.1/lib/connection_pool.rb:63:in `handle_interrupt' 
/home/vagrant/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/connection_pool-2.2.1/lib/connection_pool.rb:63:in `block in with' 
/home/vagrant/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/connection_pool-2.2.1/lib/connection_pool.rb:60:in `handle_interrupt' 
/home/vagrant/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/connection_pool-2.2.1/lib/connection_pool.rb:60:in `with' 
/home/vagrant/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/sidekiq-5.0.3/lib/sidekiq.rb:92:in `redis' 
/home/vagrant/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/sidekiq-5.0.3/lib/sidekiq.rb:106:in `redis_info' 
/home/vagrant/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/sidekiq-5.0.3/lib/sidekiq/cli.rb:81:in `run' 
/home/vagrant/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/sidekiq-5.0.3/bin/sidekiq:12:in `<top (required)>' 
/home/vagrant/.rbenv/versions/2.3.0/bin/sidekiq:23:in `load' 
/home/vagrant/.rbenv/versions/2.3.0/bin/sidekiq:23:in `<top (required)>' 
/home/vagrant/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/bundler-1.14.6/lib/bundler/cli/exec.rb:74:in `load' 
/home/vagrant/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/bundler-1.14.6/lib/bundler/cli/exec.rb:74:in `kernel_load' 
/home/vagrant/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/bundler-1.14.6/lib/bundler/cli/exec.rb:27:in `run' 
/home/vagrant/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/bundler-1.14.6/lib/bundler/cli.rb:335:in `exec' 
/home/vagrant/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/bundler-1.14.6/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run' 
/home/vagrant/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/bundler-1.14.6/lib/bundler/vendor/thor/lib/thor/invocation.rb:126:in `invoke_command' 
/home/vagrant/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/bundler-1.14.6/lib/bundler/vendor/thor/lib/thor.rb:359:in `dispatch' 
/home/vagrant/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/bundler-1.14.6/lib/bundler/cli.rb:20:in `dispatch' 
/home/vagrant/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/bundler-1.14.6/lib/bundler/vendor/thor/lib/thor/base.rb:440:in `start' 
/home/vagrant/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/bundler-1.14.6/lib/bundler/cli.rb:11:in `start' 
/home/vagrant/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/bundler-1.14.6/exe/bundle:32:in `block in <top (required)>' 
/home/vagrant/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/bundler-1.14.6/lib/bundler/friendly_errors.rb:121:in `with_friendly_errors' 
/home/vagrant/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/bundler-1.14.6/exe/bundle:24:in `<top (required)>' 
/home/vagrant/.rbenv/versions/2.3.0/bin/bundle:23:in `load' 
/home/vagrant/.rbenv/versions/2.3.0/bin/bundle:23:in `<main>' 

所以,我嘗試reids-cliCLIENT LIST

redis 127.0.0.1:6379> CLIENT LIST 
addr=127.0.0.1:49802 fd=5 idle=0 flags=N db=0 sub=0 psub=0 qbuf=0 obl=0 oll=0 events=r cmd=client 

我完全遵循this Japanese blog指令。我搜索了一些關鍵字,例如'sidekiq語法錯誤','sidekiq vagrant錯誤','sidekiq virtualbox'和'sidekiq客戶端列表',但沒有找到有用的文章。

出了什麼問題?流浪漢上sidekiq不可用?


  • MACOS塞拉利昂10.12.5
  • 流浪1.9.4
  • centos64(流浪)
  • 紅寶石2.3.0p0
  • 滑軌5.1.1
  • 捆紮機1.14.6

Gemfile:

gem 'sidekiq' 
gem 'redis', '3.3.3' 
gem 'redis-rails' 
gem 'redis-namespace' 
+0

您正在使用哪個Redis版本? 'redis-server --version' – Drenmi

+0

Redis版本是2.4.10(00000000:0)。 – user7336686

回答

0

看着堆棧跟蹤,錯誤似乎從this block發起:

with_reconnect(false) do 
    establish_connection 
    call [:auth, password] if password 
    call [:select, db] if db != 0 
    call [:client, :setname, @options[:id]] if @options[:id] 
    @connector.check(self) 
end 

需特別注意這一行:

call [:client, :setname, @options[:id]] if @options[:id] 

CLIENT SETNAME命令只能從Redis的2.6。 9。如果您嘗試使用舊版本運行它,則會看到您所看到的錯誤消息。

解決方法是將Redis升級到至少2.6.9。