Время HTTP-запросов с ruby ​​(net/http и rest-client), но быстрое с curl + py

Я вызываю службу Java через конечную точку http (встроенный причал). Сервис обрабатывает асинхронные http-запросы с тайм-аутом 5 с и надежно работает, когда я вызываю его из браузера с параметрами URL, скриптом curl или py.

Когда я вызываю его из ruby-скрипта с net/http или rest-client, тайм-аут в половине случаев ?! Любая идея, что может быть причиной этого и какое возможное решение может быть (с рубином)?

Я использую ruby ​​1.9.3-p125, а скрипты ruby ​​и python состоят из ‹10 строк (обычно я делаю вызов из более крупного фрагмента кода, но маленькая версия тоже не работает).

сеть/http

paramStr = "rid=#{rid}&id=#{id}&json=#{json}"
uri = URI.parse(URI.escape(proxy_server_addr+"?"+paramStr))
response = Net::HTTP.get_response(uri)

клиент отдыха

resource = RestClient::Resource.new('http://myserver.com:9001', :timeout => 10)
response = resource["/"].get :params => {:id => id, :rid => rid, :json => json}

завиток

curl 'http://myserver:9001/?id=...'

py

import urllib2
print urllib2.urlopen("http://myserver.com:9001?id=...").read()

введите здесь описание изображения


person nflacco    schedule 21.05.2012    source источник


Ответы (1)


Вы слишком усложняете это. Рубиновый эквивалент urllib2 — open-uri:

require 'open-uri'
puts open("http://myserver.com:9001?id=...").read
person pguardiario    schedule 21.05.2012
comment
Это работает отлично. Любая идея, почему время ожидания других библиотек истекло? - person nflacco; 21.05.2012
comment
Да, насколько я могу судить, вы использовали их совершенно неправильно :) - person pguardiario; 21.05.2012
comment
ах! Мне тоже удалось заставить работать оставшийся клиент... но ни open-uri, ни rest-client не работают постоянно удаленно. Это странно. Вот мой дополнительный вопрос вызовы ведут себя по-разному локально по сравнению с aws, это ruby ​​или aws"> stackoverflow.com/questions/10693959/ - person nflacco; 22.05.2012