我有一个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)
请帮助我理解,为什么会发生这种情况?
答案 0 :(得分:1)
尝试显式连接到回送地址。 localhost可能存在解决问题。
uri = URI('http://127.0.0.1:8081/adhoc/dummy_poll?noAuth=true')
答案 1 :(得分:0)
您可能没有在port 8081
上运行任何服务器,这就是拒绝连接的原因。
用lsof -i
检查它,并在linux机器上查找绑定到8081的程序。