2016-01-13 3 views
0

У меня есть класс рубин, в котором я делаю Net :: HTTP.start звонок по выполнить method.This это код:рубин 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 

Теперь я получаю эта ошибка:

Соединение отклонено - подключение (2) для ":: 1" порта 8081

Когда я епдиеее это в resque из другого класса, используя следующую строку:

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

Однако HTTP.start отлично без ошибок работает, когда выполнить метод вызывается в некоторых еще один класс с помощью:

Poller.perform(args) 

Пожалуйста, помогите мне понять, почему это происходит?

ответ

0

Возможно, у вас нет сервера, работающего на port 8081, поэтому в связи с этим будет отказано. Проверьте это с помощью lsof -i и найдите программы, привязанные к 8081 на машине linux.

+1

Сервер работает нормально. Я пробовал использовать тот же url.And, я могу ударить, используя прямой вызов. – user3165873

+0

Чтобы быть ясным, проблема в том, что вы используете его прямо или когда используете его с помощью Resque? Формулировка вашего вопроса для меня была непонятна. – BookOfGreg

+0

Проблема в том, что я использую его с помощью Resque. – user3165873

1

попробуйте явно подключиться к обратному адресу петли. Могут возникнуть проблемы с разрешением localhost.

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

 Смежные вопросы

  • Нет связанных вопросов^_^