Ruby Net :: HTTP.start拒绝连接

时间:2016-01-13 09:20:01

标签: ruby-on-rails ruby resque

我有一个ruby类,其中我在执行方法中调用Net :: HTTP.start。这是代码:

class Poller

def self.perform(args)
uri = URI('http://localhost:8081/adhoc/dummy_poll?noAuth=true')
begin
  Net::HTTP.start(uri.host, uri.port, :read_timeout=>30) do |http|
    request = Net::HTTP::Get.new uri
    @response = http.request request
    @responsecode = @response.code
  end
rescue Exception => e
  Rails.logger.error "error mess==>"+e.message()
  @responsecode = "408"
end

当我使用此行从另一个班级resque中将其排入队列时:

Resque.enqueue_in_with_queue(:data_workflow_manager,10,Poller,args)

我收到此错误:

拒绝连接 - 连接(2)“:: 1”端口8081。

但是,当使用以下方法在另一个类中调用perform方法时,HTTP.start正常工作而没有任何错误:

    Poller.perform(args)

请帮助我理解,为什么会发生这种情况?

2 个答案:

答案 0 :(得分:1)

尝试显式连接到回送地址。 localhost可能存在解决问题。

uri = URI('http://127.0.0.1:8081/adhoc/dummy_poll?noAuth=true')

答案 1 :(得分:0)

您可能没有在port 8081上运行任何服务器,这就是拒绝连接的原因。 用lsof -i检查它,并在linux机器上查找绑定到8081的程序。