Как правильно распределить нагрузку в программе?

Здравствуйте, у меня возникло непонимание как поступить.
У меня есть приложение, которое парсит данные с двух сайтов. Все это делается синхронно, шаг за шагом. В сумме получается 20-25 секунд. Для одного из сайта используется библиотека grequests(основанная на gevent). У меня возникла идея как ускорить этот процесс. Я прочитал очень много информации по этому поводу. В итоге для python обнаружил 3 варианта: threading, multiprocessing, асинхронные запросы.
Как мне лучше реализовать архитектуру для моего парсера. Вижу я это так.
Есть главный поток, который связывает парсер для первого сайта и парсер для второго сайта.
Каждому парсеру выделяется свой процесс. То есть теперь в сумме у нас 3 процесса(основной, парсер1, парсер2)
В процессах парсер1 и парсер2 использовать асинхронные запросы.

Правильно ли я мыслю? Или меня надо прибить лопатой?)

И еще маленький вопросик. Отличие от асинхронных запросов и потоков в том, что асинхронный это сокет, который не закрывается после каждого запроса. А поток это просто распараллеливание для использование всех ресурсов системы. Правильно?
  • Вопрос задан
  • 352 просмотра
Решения вопроса 2
dimonchik2013
@dimonchik2013
non progredi est regredi
про асинхронный неправильно, щас лень картинки искать

вообще посмотри на multicurl если че, дешево и сердито

если же серьезно - есть Scrapy и Grablib для начинающих и кончающих (один топик на АпВорке с $10 000 бюджетом для Scrapy чего стоит) скраперов

еще серьезнее вот такие штуки, можешь заценить там даунлоадер, ну или сразу переделать под свои нужды
Ответ написан
Комментировать
sim3x
@sim3x
Делаешь парсер для каждого сайта в отдельном файле, потом используешь https://www.gnu.org/software/parallel/
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы