【问题标题】:http requests time out with ruby (net/http and rest-client) but fast with curl + pyruby(net/http 和 rest-client)的 http 请求超时,但 curl + py 的速度很快
【发布时间】:2012-05-27 15:55:06
【问题描述】:

我正在通过其 http 端点(嵌入式码头)调用 java 服务。该服务处理超时为 5 秒的异步 http 请求,并且当我使用 url 参数、curl 或 py 脚本从浏览器调用它时,它可以可靠地工作。

当我使用 net/http 或 rest-client 从 ruby​​ 脚本调用它时,它会超时一半?!知道什么可能导致这种情况以及可能的解决方案是什么(使用 ruby​​)?

我正在使用 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()

【问题讨论】:

    标签: ruby http curl rest-client


    【解决方案1】:

    你把它复杂化了。 urllib2 的 ruby​​ 等价物是 open-uri:

    require 'open-uri'
    puts open("http://myserver.com:9001?id=...").read
    

    【讨论】:

    • 效果很好。知道为什么其他库会超时吗?
    • 是的,据我所知,您完全错误地使用了它们 :)
    • 啊!我也设法让休息客户端工作......但是 open-uri 或休息客户端都不能远程工作。这很奇怪。这是我的后续问题stackoverflow.com/questions/10693959/…
    猜你喜欢
    • 2019-11-13
    • 1970-01-01
    • 2016-07-12
    • 2020-04-29
    • 1970-01-01
    • 2011-01-14
    • 1970-01-01
    • 1970-01-01
    • 2016-09-20
    相关资源
    最近更新 更多