2012-02-26 87 views
1

我使用python插座連接到服務器,但有時得到這個:蟒蛇插座errno的10060

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

當我打電話的socket.connect方法

s= socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
s.bind((self._ipv4address, host_port)) 
try: 
    s.connect((dest_ip, dest_port)) 
except: 
    raise 

爲什麼我我看到這個錯誤?我該如何解決這個問題?

+1

也許這是因爲服務器沒有正確的一段時間...... – snapshoe 2012-02-26 20:52:26

+0

後迴應,但我敢肯定有什麼不對的服務器(如果這是你的意思),我試圖加載網站,該網站可以在不使用我的程序的情況下從瀏覽器中正常打開,唯一的問題是它有點大。 – 2012-02-26 20:57:43

+0

你確定它不會發生在你的瀏覽器_sometimes_?因爲10060似乎是一個超時錯誤,是否有可能服務器接受連接速度很慢(忙碌的男孩),並且您的瀏覽器有更高的超時閾值?你真的需要將套接字綁定到本地地址嗎? (我可能會認爲這_sometimes_可能是一個原因。) – tomasz 2012-02-26 22:26:16

回答

3

你不需要綁定套接字(除非遠程服務器有進入插座的預期) - 這是極爲罕見的,這實際上是要求進行連接。

而是使用套接字打開一個網站,使用urllib2mechanize如果你需要玩弄形式。他們管理cookies,會話,頁面狀態等。更容易。

此外,如果您連接失敗..不要放棄!再試一次,有些網站可能會迴應。有些人可能不會迴應一段時間,因爲 - 處理得更好。而不是僅僅提高錯誤,而是用exponential backoff修飾器包裝連接方法。

+1

指數退避似乎是工作,不知道那種模式......非常感謝你的伴侶:) – 2012-02-28 13:31:18