tom*_*ger 0 ruby-on-rails heroku http-post
我正在尝试对外部服务执行Rails POST请求,看起来大致如下:
def self.send_post_request(domain, data)
uri = URI.parse(domain)
http = Net::HTTP.new(uri.host, uri.port)
request = Net::HTTP::Post.new(uri.request_uri)
request.set_form_data(data)
http.use_ssl = true if domain =~ /^https/
response = http.request(request)
end
Run Code Online (Sandbox Code Playgroud)
它在本地工作正常,但一旦我部署到heroku,我收到此错误:
SocketError: getaddrinfo: Temporary failure in name resolution
Run Code Online (Sandbox Code Playgroud)
有关如何解决此问题的任何想法?
非常感谢您的帮助!!
编辑:这些是我在相应模型中包含的库:
require "net/http"
require "net/https"
require "uri"
Run Code Online (Sandbox Code Playgroud)
这是实际错误后控制台向我抛出的内容:
from /usr/local/lib/ruby/1.9.1/net/http.rb:644:in `initialize'
from /usr/local/lib/ruby/1.9.1/net/http.rb:644:in `open'
from /usr/local/lib/ruby/1.9.1/net/http.rb:644:in `block in connect'
from /usr/local/lib/ruby/1.9.1/timeout.rb:44:in `timeout'
from /usr/local/lib/ruby/1.9.1/timeout.rb:89:in `timeout'
from /usr/local/lib/ruby/1.9.1/net/http.rb:644:in `connect'
from /usr/local/lib/ruby/1.9.1/net/http.rb:637:in `do_start'
from /usr/local/lib/ruby/1.9.1/net/http.rb:626:in `start'
from /usr/local/lib/ruby/1.9.1/net/http.rb:1168:in `request'
from /app/app/models/message.rb:224:in `send_post_request'
from /app/app/models/message.rb:46:in `opt_in_text'
from (irb):2
from /app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.6/lib/rails/commands/console.rb:47:in `start'
from /app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.6/lib/rails/commands/console.rb:8:in `start'
from /app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.6/lib/rails/commands.rb:41:in `<top (required)>'
Run Code Online (Sandbox Code Playgroud)
它看起来像连接的临时故障,可能在您的功能中重试?
def self.send_post_request(domain, data, retry_attempts=0)
uri = URI.parse(domain)
http = Net::HTTP.new(uri.host, uri.port)
request = Net::HTTP::Post.new(uri.request_uri)
request.set_form_data(data)
http.use_ssl = true if domain =~ /^https/
response = http.request(request)
rescue SocketError => error
if retry_attempts > 0
retry_attempts -= 1
sleep 5
retry
end
raise
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7581 次 |
| 最近记录: |