@DamskiyUgodnik

На чём написать быстрый и лёгкий crawler?

Всем привет!
Есть необходимость парсинга большого объёма данных. Был написан парсер на python (multiprocessing, request), всё работает как надо, но столкнулся с проблемой, каждый поток выедает много процессора и оперативки (даже не ожидал что будет такая нагрузка).

Логика работы следующая:

  1. Берём url (например построчное чтение из файла)
  2. Выкачиваем
  3. Записываем ответ в файлик


Логика вроде примитивная и по идее грузиться ничего не должно, но уже при 20-30 потоках сервер еле шевелится (домашний ПК, средний проц, 16gb оперативки, ubuntu server, кроме парсера ничго не запускается, в диск по данным iotop не упираюсь).

Собственно интересует:
На чём обычно пишут промышленные парсеры, чтобы было быстро, многопоточно и адекватно по ресурсам (предполагаю моя проблема в использовании связки python,multiprocessing,request). Пока это видится в виде чего-то вроде C++ либо я просто не умею готовить python? :)
  • Вопрос задан
  • 80 просмотров
Пригласить эксперта
Ответы на вопрос 2
Jump
@Jump
Системный администратор со стажем.
Да собственно на чем угодно. Чаще всего на пайтоне и пишут.

Логика вроде примитивная и по идее грузиться ничего не должно, но уже при 20-30 потоках сервер еле шевелится
Есть такая штука как мониторинг нагрузки - смотрите во что упирается - процессор, сеть, память, диск.
Далее - отладка, смотрите сколько времени занимает выполнение той или иной операции, что именно грузит, и оптимизируйте.
Вполне вероятно что проблема в неоптимальном использовании какой-нибудь тяжелой библиотеки, или регулярки сложные массово используются.
Ответ написан
Комментировать
dimonchik2013
@dimonchik2013
non progredi est regredi
Scrapy
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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