LINUX.ORG.RU

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


0

1

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

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

socks_hnd = SocksHandler.SocksHandler(PROXY_TYPE_HTTP, ip, port)
opener = urllib.request.build_opener(socks_hnd)
urllib.request.install_opener(opener)

urllib.request ведь не хранится отдельно для каждого потока куда тогда устанавливается опенер, настроенный на конкретную прокси?

как получается так что у всех потоков эти прокси разные?

После установки опенера, наверняка делаешь запрос.

куда тогда устанавливается опенер

Загляни в urllib.request, это не сложно.

baverman ★★★
()
Ответ на: комментарий от baverman

def install_opener(opener):
global _opener
_opener = opener


все равно не понимаю
вот он ставится как дефолтный
а в это время другой поток делает то же самое

тут используется та хитрость, что в потоке класс - сам по себе уже объект? и в каждом потоке область памяти для urllib.request уникальна?

sergey-novikov ★★★
() автор топика
Ответ на: комментарий от baverman

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

sergey-novikov ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.