Привет всем!
Есть скриптик на python 3, он ходит по сайтам через TOR, скачивает отдельные странички, парсит и собирает полезные ссылки на ресурсы.
Через n запросов тор перезапускается (в будущем планируется дописать общение с тором по tcp) для создания новой цепочки.
Через тор он ходит вот так:
socks.set_default_proxy(socks.SOCKS5, "127.0.0.1",9050)
socket.socket = socks.socksocket
Для получения контента используется httplib2, парсится полученное безобразие с помощью BeautifulSoup.
Вопрос первый:
Довольно часто случается исключение IncompleteRead, а если тор не использовать, то не случается. Как правильно готовить питона под соусом из тора? Сейчас проблема решается множеством повторений запросов.
Вопрос второй:
Посоветуйте, чего почитать про распараллеливание для такой связки, какую библиотеку использовать. Запросы к сайтам могут висеть достаточно долго, зависит от сайтов, тора и погоды на Марсе. Конечные ссылки собираются в несколько этапов: стянуть с сайта страничку со ссылками верхнего уровня (разделы), отобрать чего надо, повторить n раз, получить конечные ссылки на ресурсы. Также в планах есть проверка конечных ссылок с помощью некоторой софтины на локальном хосте, т.е. через запросы http://127.0.0.1/chechGrabbedURLPlease?url=<url>
В итоге получается три списка, которые могут обрабатываться параллельно:
1. Список запросов к сайтам верхнего уровня.
2. Список запросов к 127.0.0.1 для проверки.
3. Список проверенных ссылок для записи в файл.
UPD
Ах, да... Забыл написать, что было бы неплохо использовать несколько торов одновременно (на разных портах). И, в связи с этим, насколько я понимаю, используемый код для работы с тором не подойдет, т.к. это изменения на весь процесс, а надо на поток. Чем его заменить?