簡體   English   中英

Rails應用中的HTTP :: ConnectionError和Errno :: EHOSTUNREACH錯誤

[英]HTTP::ConnectionError & Errno::EHOSTUNREACH Errors in Rails App

我正在使用Rails應用程序,這是我嘗試在數據庫中播種數據時收到的兩個重要錯誤消息:

  1. HTTP :: ConnectionError:連接失敗:操作超時-SSL_connect

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

這是我的代碼,在這里我從文件中提取數據並創建Politician對象:

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

我撬了一下,迭代在第一個循環中起作用,因此代碼正常。 幾秒鍾后,循環中斷,並且出現該錯誤,所以我認為這與我發出的HTTP.get請求數量有關?

https://github.com/unitedstates/images是一個Git倉庫。 也許那個倉庫不能處理那么多的獲取請求?

我做了一些Googleinging,發現它可能與“請求超時”錯誤有關? 我必須設置代理服務器嗎? 我是一名初級程序員,因此在回復時請非常具體。

*編輯添加此內容

我在正在請求刪除照片的網站( https://github.com/unitedstates/images )上發現了這個問題,這可能會有所幫助嗎?

注意:我們的HTTPS永久鏈接是通過CloudFlare的通用SSL提供的,該通用SSL還使用“ Flexible SSL”與GitHub Pages的未加密端點進行對話。 因此,您應該知道這不是一個端到端的加密通道,而是在客戶端使用和CloudFlare服務器之間加密的(至少應該將您的請求與客戶端IP地址分離)。

順便說一句,使用“ 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM