ruby - Net::HTTP 请求连接太慢?

标签 ruby http ovh

我从 ovh-rest gem 中提取了以下代码:

method = :get
@api_url = "https://api.ovh.com/1.0"
@api_key, @api_secret, @consumer_key = "123456789", "abcdef", "ghijkl"
endpoint = "/ip/123.456.678/"
url = @api_url + endpoint
uri = URI.parse(url)
body = nil
ts = Time.now.to_i.to_s
sig = "$1$" + Digest::SHA1.hexdigest("#{@api_secret}+#{@consumer_key}+#{method.upcase}+#{url}+#{body}+#{ts}")
request_uri = uri.path
request_uri += '?' + uri.query if uri.query
request = Net::HTTP.const_get(method.capitalize).new(request_uri)
request["X-Ovh-Application"] = @api_key
request["X-Ovh-Consumer"] = @consumer_key
request["X-Ovh-Timestamp"] = ts
request["X-Ovh-Signature"] = sig
request["Content-type"] = "application/json"
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
response = http.request(request)
JSON.parse(response.body)

如果我一步一步地做所有事情,我会出现以下错误:

{
  "errorCode": "QUERY_TIME_OUT",
  "httpCode": "400 Bad Request",
  "message": "Query out of time"
} 

但是如果我在执行 response = http.request(request) 之前等待几秒钟(可变持续时间),我的请求就成功了:

{
  "organisationId": "nil",
  "country": "myCountry",
  "routedTo": {
    "serviceName": "somename"
  },
  "ip": "123.456.678/32",
  "canBeTerminated": true,
  "type": "failover",
  "description": "nil"
}

我不知道问题是出在我的服务器上(ruby 进程太高以快速响应)还是出在其他地方..

重要提示:

这段代码工作得很好,但几天前……停止工作。

最佳答案

这是通过日期重新同步解决的。由于所有服务器的工作时间都相同,因此效果很好。

关于ruby - Net::HTTP 请求连接太慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32902717/

相关文章:

ruby-on-rails - 在 jsonb 列中搜索查询

ruby - "find_all"和 "select"是一回事吗?

c++ - 重定向 HTTP 请求

iphone - 我可以从 NSHTTPURLResponse 中的 HTTP 状态行访问 "Reason Phrase"

ruby-on-rails - Rails ActiveRecord 条件回调问题

ruby-on-rails - 如何使用 Rails 4 + PostgreSQL 查询关联记录列表?

c++ - 通过http接收二进制数据

cron - OVH - 执行 cron

node.js - 仅使用 Nodejs 运行 npm 开发?

node.js - 如何在 ovh 托管上使用 docker-compose