2010-11-17 66 views
3

我得到了下面的東西是我的代碼片段的Python - urllib2的超時

opener = urllib2.build_opener(redirect_handler.MyHTTPRedirectHandler()) 
opener.addheaders = [('Accept-encoding', 'gzip')] 
fetch_timeout = 12 
self.response = opener.open(url, timeout=fetch_timeout) 

但是,它的代碼仍然等待60〜秒超時前... 任何線索?

回答

2

您使用的是哪個版本。它在2.6

添加另外的方法是

urllib2.urlopen(url[, data][, timeout]) 

你可以嘗試提供

self.response = opener.open(url, None, fetch_timeout) 

呀爲人人,人,你仍然可以使用插座模塊設置套接字超時。

3

在猜測你可能需要設置套接字超時

import socket 

default_timeout = 12 

socket.setdefaulttimeout(default_timeout) 
+0

+1,當你進來時,我正在編輯我的答案。這適用於所有版本。 – pyfunc 2010-11-17 19:09:18

+2

似乎並不想工作。做socket.setdefaulttimeout(12)然後打印socket.getdefaulttimeout()說None這是OSX上的2.6.1 Snow Leopard – Wizzard 2010-11-18 09:07:19