/ sidekiq / getaddrinfo中的SocketError:提供的nodename或servname,或者未知

时间:2016-07-09 14:01:25

标签: ruby-on-rails redis sidekiq

我是新手Rails开发构建连接到redis + sidekiq的应用程序。我必须有一些配置错误,但我不确定它究竟是什么。下面,我将在这里写下我的确困惑:

运行rails后,我收到以下错误:

2016-07-09 08:55:46 - SocketError - getaddrinfo: nodename nor servname provided, or not known:
/Users/rohitrekhi/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/redis-3.3.0/lib/redis/connection/ruby.rb:177:in `getaddrinfo'
/Users/rohitrekhi/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/redis-3.3.0/lib/redis/connection/ruby.rb:177:in `connect'
/Users/rohitrekhi/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/redis-3.3.0/lib/redis/connection/ruby.rb:260:in `connect'
/Users/rohitrekhi/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/redis-3.3.0/lib/redis/client.rb:336:in `establish_connection'

所以我认为它必须是redis连接错误。当我ping redis以查看连接是否通过时,它显示以下内容:

$ redis-cli ping
=> PONG

所以如果redis连接通过,也许是Sidekiq问题?

我通过Sinatra实现了Sidekiq Web界面,并在我尝试查看时出现以下错误:

SocketError at /sidekiq/
getaddrinfo: nodename nor servname provided, or not known

所以现在我猜测错误实际上是通过Sidekiq,但我不确定我通过主机/服务器/套接字上的配置丢球。任何想法究竟是什么导致了这一点,如果是Sidekiq或redis的错误?

这是我的config / initializers / sidekiq.rb中sidekiq的初始化文件:

Sidekiq.configure_server do |config|
config.redis = { url: 'redis://redis.example.com:6379/12', network_timeout: 5 }
end

Sidekiq.configure_client do |config|
  config.redis = { url: 'redis://redis.example.com:6379/12', network_timeout: 5 }
end

这是我的config / initializer / redis.rb:

$redis = Redis.new(:host => 'localhost', :port => 6379)

我还打开了三个终端窗口,打开了redis服务器,sidekiq和我的rails服务器。

提前致谢!

1 个答案:

答案 0 :(得分:2)

这没有任何意义:

redis://redis.example.com:6379/12

您在该网址上没有Redis服务器;修复网址。