我有一個大型的抓取工作要做 - 由於大量的網絡延遲,大部分腳本的時間都被阻塞了。我想多線程的腳本,這樣我就可以同時進行多個請求,但我的線程的10%左右,出現以下錯誤python中的多線程web請求 - '名稱或服務未知'
URLError: <urlopen error [Errno -2] Name or service not known>
剩下的90%成功完成死亡。我正在請求來自同一個域的多個頁面,所以它似乎可能會出現一些DNS問題。我一次提出25個請求(25個線程)。如果我一次只限制5個請求,一切正常,但一旦我接近10個請求,我有時會看到這個錯誤。
我已閱讀Repeated host lookups failing in urllib2 其中描述了我有同樣的問題,並遵循其中的建議,但無濟於事。
我也嘗試使用多處理模塊而不是多線程,我得到了相同的行爲 - 大約10%的進程死於相同的錯誤 - 這導致我相信這不是urllib2的問題但別的東西。
有人可以解釋發生了什麼,並建議如何解決?
UPDATE
如果我手工編碼的網站的IP地址到我的劇本一切完美,所以DNS查找在這個錯誤發生的某個時候。
您有權訪問服務器嗎?你可能會遇到一些反拒絕服務的東西,或者如果服務器不是那麼重的話,那麼你實際上可能會超載它... – jswolf19
這是一個主要的網站,能夠處理數百或數以千計的同時請求,我25甚至沒有一個小小的凹痕。我很確定這是一個DNS解決的問題,因爲如果我用IP地址替換域名,我的腳本運行完美 - 所以網站沒有明確地關閉我。在這一點上,我只想了解DNS查找失敗的原因。 –
然後,DNS服務器可能會出現一個問題,只允許客戶在一段時間內發出如此多的請求,或者您有什麼要求。 – jswolf19