【问题标题】:HTTP::ConnectionError & Errno::EHOSTUNREACH Errors in Rails AppRails 应用程序中的 HTTP::ConnectionError 和 Errno::EHOSTUNREACH 错误
【发布时间】:2017-06-07 09:44:50
【问题描述】:

我正在开发一个 Rails 应用程序,当我尝试在我的数据库中植入数据时,我收到了两条重要的错误消息:

  1. HTTP::ConnectionError: 连接失败:操作超时 - SSL_connect

  2. Errno::ETIMEDOUT:操作超时 - SSL_connect

这是我的代码,我从文件中提取数据并创建政治家对象:

politician_data.each do |politician|

    photo_from_congress = "https://theunitedstates.io/images/congress/original/" + politician["id"]["bioguide"] + ".jpg"

    HTTP.get(photo_from_congress).code == 200 ? image = photo_from_congress : image = "noPoliticianImage.png" 

    Politician.create(
        name: "#{politician["name"]["first"]} #{politician["name"]["last"]}",
        image: image
    )
end

我做了一个pry,迭代适用于第一个循环,所以代码没问题。几秒钟后,循环中断,我得到了那个错误,所以我认为这与我发出的 HTTP.get 请求的数量有关?

https://github.com/unitedstates/images 是一个 Git 存储库。也许那个 repo 不能处理这么多的 get 请求?

我做了一些谷歌搜索,发现它可能与“请求超时”错误有关?我必须设置代理服务器?我是一名初级程序员,所以请在回复时非常具体。

*编辑以添加此内容

我在发出获取请求以剔除照片的网站 (https://github.com/unitedstates/images) 上发现了这个简介,这可能会有所帮助吗?

注意:我们的 HTTPS 永久链接是通过 CloudFlare 的通用 SSL 提供的,它还使用“灵活 SSL”与 GitHub Pages 的未加密端点通信。因此,您应该知道它不是端到端加密通道,而是在您的客户端使用和 CloudFlare 的服务器之间加密(至少应该将您的请求与客户端 IP 地址分离)。

【问题讨论】:

    标签: ruby-on-rails github https connection ssl-certificate


    【解决方案1】:

    顺便说一句,使用“Net::HTTP”而不是“HTTP”Ruby gem 是有效的。我没有检查状态代码,而是检查了正文是否包含关键文本:

    photo_from_congress = "https://theunitedstates.io/images/congress/original/" + politician["id"]["bioguide"] + ".jpg" 
    
    photo_as_URI = URI(photo_from_congress)
    
    Net::HTTP.get_response(photo_as_URI ).body.include?("File not found") ? image = "noPoliticianImage.png" : image = photo_from_congress
    

    【讨论】:

      猜你喜欢
      • 2019-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-10
      • 2020-12-16
      • 2020-04-24
      相关资源
      最近更新 更多