2014-06-19 104 views
0

我的Python代碼下載從我們的網站上的文件。該代碼無法在某些客戶端計算機上下載該文件。我不能爲我的生活找出當腳本在某些計算機上運行但在其他計算機上運行時文件無法下載的原因。什麼是這的urlopen錯誤的原因

是某些計算機上出現的錯誤是:

<urlopen error [Errno 10060] A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond> 

客戶端確認它們連接到互聯網,他們能夠成功地通過Web瀏覽器下載同一個文件(同一個URL)。令人難以置信的是,腳本在某些計算機上運行,​​而不是在其他計算機上運行,​​它們連接到互聯網但無法下載文件,並且它們可以通過瀏覽器下載文件,但無法通過腳本進行下載?也許是因爲他們不是管理員用戶?

什麼會導致這種類型的錯誤?

我簡單的代碼:

try: 

    source_buffer = urllib2.urlopen(URL) 
    source_code = source_buffer.read() 
    source_buffer.close() 
    return source_code 

except Exception, e: 
    print e 

PS:你認爲這是一個代理的錯誤?如果是,你能解釋究竟發生了什麼問題嗎?代理一直困惑我 - 以及我使用代理的所有HTTP,HTTPS,FTP請求通過代理計算機(中介)外出前到互聯網,但我不明白這是如何錯誤可以從代理造成的,當明白了嗎?發生什麼事了?發生了什麼?

+0

建議使用'requests'庫,它是非常容易使用。 –

+0

工作的電腦和不工作的電腦有什麼不同? .e.g不同的操作系統,不同版本的Python等 – mhawke

+0

@mhawke我已經確認他們使用的是Windows 7操作系統,相同版本的Python 2.7。我無法確定的一件事是他們的網絡設置(如果他們使用代理等),因爲他們不是技術最高的用戶,也不知道。 – nondescript

回答

1

這可能是代理,或尋找錯誤消息,也可能是本地/個人防火牆設置到達您的應用程序攔截從你的應用程序從服務器的傳出請求或響應。本地防火牆設置在不同計算機之間很容易變化,這可能會導致問題。

+0

感謝您的回答。請認爲,因爲他們可以使用Web瀏覽器下載文件(但不能在我的腳本中),這意味着它不是代理?因爲代理也會禁止瀏覽器下載它? – nondescript

+0

如果其防火牆阻止出/入請求。有什麼我可以做的程序化? - 那不是黑客行爲。或者,我是唯一一個與公司聯繫的解決方案,並要求他們的IT部門將我的腳本和/或URL添加到排除列表中? – nondescript

+0

它可能是一個代理問題,但它可能是其他內容,如防火牆。有些防火牆允許您在每個應用程序的基礎上授予權限,因此可能會允許瀏覽器(可能間接通過代理),但您的應用程序不允許。而不是猜測,你需要首先確定問題的原因。要做到這一點,您需要向用戶正確的問題,或者獲取物理或[遠程](http://windows.microsoft.com/en-au/windows/connect-using-remote-desktop-connection#connect-using -remote-desktop-connection = windows-7)訪問受影響的計算機之一。 – mhawke