2010-11-17 3 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

+2

Кажется, что не хочет работать. Выполняя socket.setdefaulttimeout (12), затем распечатайте socket.getdefaulttimeout() говорит None. Это 2.6.1 на OSX Snow Leopard – Wizzard