Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Web
  • » python/urllib: зависает запрос через прокси [RSS Feed]

#1 Июнь 10, 2011 17:01:00

Игнат
От:
Зарегистрирован: 2010-10-02
Сообщения: 224
Репутация: +  0  -
Профиль   Отправить e-mail  

python/urllib: зависает запрос через прокси

python 3.2 проверяю прокси urllib-ом:

 request = urllib.request.Request(url)
request.add_header('User-Agent',
'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.3) Gecko/20190824 Firefox/3.5.3')

opener = urllib.request.build_opener(urllib.request.ProxyHandler({'https': '213.111.252.230:8000'}))
urllib.request.install_opener(opener)

try:
res = urllib.request.urlopen(request,
timeout=3)
except HTTPError as e:
self.log('сервер вернул ошибку: %s' % e.code, '!')
return False
except URLError as e:
self.log('не могу скачать страницу: %s' % e.reason, '!')
return False
except Exception as e:
self.log('ошибка: %s' % e, '!')
else:
headers = res.getheaders()
encoding = self.parent.http._get_encoding(headers)

try:
data = res.read().decode(encoding, 'ignore')
except Exception as e:
self.log('ошибка http.read().decode(): %s' % e, '!')
return False
и собственно, на чем все виснет:

 проверяем 213.111.252.230:8000, тип 0
[!] ошибка: <urlopen error [Errno 111] В соединении отказано>
проверяем 213.111.252.230:8000, тип 1
[!] ошибка: <urlopen error timed out>
* тут виснет на минуту *
проверяем 213.111.252.230:8000, тип 2
[!] ошибка: <urlopen error [Errno 110] Время ожидания соединения истекло>
* и тут продолжает тупить *
на запросах меняется тип - 0,1,2 - это типы хэндлеров прокси 0 - urllib.request.ProxyHandler 1 - socks5 - proxiPy 2 - https - proxiPy

но тип прокси ничего не меняет несмотря на то, что timeout = 3 сек. – тупит все равно бесконечно долго

и ещё, что интересно, перед запросом ставлю HTTPConnection.debuglevel = 2 но отладочной информации в логе не выводится



Офлайн

#2 Июнь 10, 2011 21:55:06

Игнат
От:
Зарегистрирован: 2010-10-02
Сообщения: 224
Репутация: +  0  -
Профиль   Отправить e-mail  

python/urllib: зависает запрос через прокси

отвечу сам себе
в socksHandler, использующем портированный на 3.2 socksiPy есть такая строчка

if isinstance(self.timeout, float):
self.sock.settimeout(self.timeout)

такая вот байда. никогда бы в голову не пришло ставить таймаут в флоат.
изменил проверку на int и все заработало



Офлайн

  • Начало
  • » Web
  • » python/urllib: зависает запрос через прокси[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version