Разделы · Парсеры и сбор данных
Задача рабочая, сроки сжатые, и хочется решить один раз.
Каталог на 400 тысяч адресов, память на машине 32 гигабайта. Ставил 200 потоков, потом снижал до 80, разница по времени невелика.
$ ./sbor --potokov 120 --spisok chast-01.txt --proksi pool.txt обработано: 48 210 / 50 000 пустых ответов: 1 842
Буду признателен за конкретику.
Добавлю то, что обычно вылезает на второй месяц работы.
Потери записей чаще всего идут из-за коротких ответов, которые программа считает успешными. Заведите проверку на минимальный размер ответа и на наличие обязательного куска разметки.
Память ест не число потоков, а хранение всего собранного в памяти до конца прогона. Пишите результат на диск пачками, и потолок пропадёт.
Считайте по темпу, всё остальное вторично.
Расскажу, чем закончилось у меня.
Разметка на маркетплейсах меняется регулярно. Держите разбор в одном месте, чтобы правка занимала минуту, а не полдня.
Работает, пока объём небольшой. Дальше правила другие.
Большие каталоги не надо гонять одним куском. Разбейте на части по пятьдесят тысяч, каждую с отдельным состоянием, и падение одной части перестанет ронять весь прогон.
$ ./sbor --potokov 120 --spisok chast-01.txt --proksi pool.txt обработано: 48 210 / 50 000 пустых ответов: 1 842