Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Web
  • » urllib.request.install_opener и многопоточность [RSS Feed]

#1 Сен. 2, 2011 20:01:56

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

urllib.request.install_opener и многопоточность

скажите пожалуйста, если каждый поток ставит себе соксХендлер, чтобы работать через свою прокси, как получается так что у всех эти прокси разные?

# каждый поток ставит прокси так:

socks_hnd = SocksHandler.SocksHandler(PROXY_TYPE_HTTP, ip, port)
opener = urllib.request.build_opener(socks_hnd)
urllib.request.install_opener(opener)
urllib.request ведь не хранится отдельно для каждого потока
куда тогда устанавливается опенер, настроенный на конкретную прокси?



Офлайн

#2 Сен. 4, 2011 10:20:13

kazaff
От:
Зарегистрирован: 2011-08-12
Сообщения: 26
Репутация: +  2  -
Профиль   Отправить e-mail  

urllib.request.install_opener и многопоточность

Попробуйте этот код:

class HTTPWithProxy:
def __init__( self, proxy, user_agent='Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9.2.3) Gecko/20100423 Ubuntu/10.04 (lucid) Firefox/3.6.3', headers={} ):
''' proxy - {'http':'ipaddres:port'} '''
# создаем опенер, который может работать через прокси
self.opener = urllib.request.build_opener( urllib.request.ProxyHandler( proxy ) )

self.opener.addheaders = [ {'User-agent', user_agent} ]

def request( self, url, data={}, timeout=5 ):
if data:
try:
html = self.opener.open( url, data, timeout )
except Exception as error:
print( 'Error:', error )
else:
try:
html = self.opener.open( url, None, timeout )
except Exception as error:
print( 'Error:', error )
return html
Только в нем не сокс, а http-proxy
connect = HTTPWithProxy( proxy )
response = connect.request( 'http://cmyip.com' )
page = response.read()



Отредактировано (Сен. 4, 2011 10:23:28)

Офлайн

#3 Сен. 8, 2011 18:09:07

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

urllib.request.install_opener и многопоточность

спасибо, но рабочий код и у меня есть
я хотел бы понять как он работает



Офлайн

#4 Сен. 8, 2011 21:11:56

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

urllib.request.install_opener и многопоточность

устанавливается в библиотеку как синглетон



Офлайн

  • Начало
  • » Web
  • » urllib.request.install_opener и многопоточность[RSS Feed]

Board footer

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

Powered by DjangoBB

Lo-Fi Version