1

コンソールで実行すると一連の API 呼び出しを実行するスクリプトがあり、それは素晴らしく機能します。しかし、サーバーで実行すると、「getaddrinfo: 回復不能なエラーが発生しました..」というエラーが表示されます。

問題を引き起こしていると思われる私のコードの一部は次のとおりです。

require "uri"
require "net/http"
require "json"
uri = URI("https://api.domain.com/location/of/api_call/data.json?other=1&query=1&stuff=1")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
headers = {"Range" => "bytes=1000-",
           "Api-Key" => API_KEY,
           "X-Api-Secret" => API_SECRET}
response = ""
res = http.get(uri.path + "?" + uri.query, headers) do |data|
    response += data
end
if res.code.to_i === 200
    response = JSON.parse(response)
else
    response = {"error" => "api call failed"}
end

かなり単純です...望ましい結果を得るには、httpおよびresオブジェクトを少しマッサージする必要がありました。コンソールからはうまく機能しますが、サーバーを起動するとエラーが発生します。

コンテキスト: rufus-scheduler を使用してジョブをスケジュールする Dashing ダッシュボードを実行しています。これは、30 分ごとに実行するようにスケジュールしたジョブです。Dashing も Unicorn の代わりに Thin サーバーを使用します。

これが私が得る完全なエラーです:

scheduler caught exception:
getaddrinfo: A non-recoverable error occurred during a database lookup.
c:/Ruby2.0.0/lib/ruby/2.0.0/net/http.rb:878:in `initialize'
c:/Ruby2.0.0/lib/ruby/2.0.0/net/http.rb:878:in `open'
c:/Ruby2.0.0/lib/ruby/2.0.0/net/http.rb:878:in `block in connect'
c:/Ruby2.0.0/lib/ruby/2.0.0/timeout.rb:52:in `timeout'
c:/Ruby2.0.0/lib/ruby/2.0.0/net/http.rb:877:in `connect'
c:/Ruby2.0.0/lib/ruby/2.0.0/net/http.rb:862:in `do_start'
c:/Ruby2.0.0/lib/ruby/2.0.0/net/http.rb:851:in `start'
c:/Ruby2.0.0/lib/ruby/2.0.0/net/http.rb:1367:in `request'
c:/Ruby2.0.0/lib/ruby/2.0.0/net/http.rb:1126:in `get'
c:/path/to/file.rb: 215:in `block in <top (required)>'

注:215行目は「res = ...」にあります

アップデート:

APIアドレスでnslookupを実行し、取得しました

*** Default servers are not available
Server:  UnKnown
Address:  127.0.0.1
4

0 に答える 0