【问题标题】:Ruby Net::HTTP.start giving connection refusedRuby Net::HTTP.start 拒绝连接
【发布时间】:2018-12-05 22:18:45
【问题描述】:

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

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)

我收到此错误:

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

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

    Poller.perform(args)

请帮助我理解,为什么会这样?

【问题讨论】:

    标签: ruby-on-rails ruby resque


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 服务器运行良好。我尝试点击相同的 url。我可以直接调用。
      • 要明确,是直接使用还是和Resque一起使用有问题?我不清楚你的问题的措辞。
      • 问题是当我将它与 Resque 一起使用时。
      猜你喜欢
      • 2016-12-26
      • 1970-01-01
      • 2013-03-15
      • 1970-01-01
      • 2021-05-05
      • 1970-01-01
      • 2017-08-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多