我寫了一個腳本,將通過我們的數據庫中的所有客戶,驗證他們的網站網址的作品,並試圖找到他們的主頁上的Twitter鏈接。我們有超過10,000個網址進行驗證。如果網址已經過驗證,那麼我們會爲每個網址獲取getaddrinfo錯誤。getaddrinfo錯誤與機械化
這裏有擦傷單個URL代碼的副本:
def scrape_url(url)
url_found = false
twitter_name = nil
begin
agent = Mechanize.new do |a|
a.follow_meta_refresh = true
end
agent.get(normalize_url(url)) do |page|
url_found = true
twitter_name = find_twitter_name(page)
end
@err << "[#{@current_record}] SUCCESS\n"
rescue Exception => e
@err << "[#{@current_record}] ERROR (#{url}): "
@err << e.message
@err << "\n"
end
[url_found, twitter_name]
end
注:我也運行一個版本的代碼,創建被共享的所有調用scrape_url一個機械化實例。它的失敗方式完全一樣。
當我在EC2上運行此,它獲得通過幾乎完全1000個網址,然後返回該錯誤的剩餘9,000+:
getaddrinfo: Temporary failure in name resolution
注意,我同時使用Amazon的DNS服務器和谷歌的DNS嘗試服務器,認爲它可能是一個合法的DNS問題。在這兩種情況下我都得到了完全相同的結果。
然後,我試着在我的本地MacBook Pro上運行它。它只能通過約250返回了這個錯誤的的記錄剩餘部分之前:
getaddrinfo: nodename nor servname provided, or not known
有誰知道我怎樣才能拿到劇本通過所有的記錄做呢?
向我們展示它失敗的網址。 – pguardiario
約有9000人失敗。一個例子是http://www.agilecommerce.com。如果插入瀏覽器,URL往往會工作。 – EricM
你能用完內存嗎? – pguardiario