?

Log in

No account? Create an account
Previous Entry Share Next Entry
Многопоточная качалка на Perl
what_me

в FB ленте увидел пост zamotivator про то, как он делал своё же тестовое задание - многопоточный загрузчик. Я такие штучки люблю, и сделал свой https://github.com/onokhov/crawler/blob/master/crawler.pl. Естественно на Perl.

Для этой задачки было бы достаточно параллельных коннектов, сделанных с AnyEvent::HTTP. Но параллельность там не совсем настоящая, потому как читать ответы, парсить их и записывать в файлы всё равно пришлось бы в один поток. Да и скучно было бы писать программу, основная часть которой уже написана в мануале по AnyEvent. Поэтому я решил реализовать параллельность форками.

AnyEvent остался для того, чтобы раздавать задания в дочерние процессы, а загрузка, разбор и сохранение в файл -- это всё уже параллельно для каждого каждого загружаемого урла. Такая схема может быть полезна для рекурсивных задач, требующих вычислительной мощности.

Скрипту аргументами даётся адрес, который надо закачать, и, опционально, на сколько потоков вести закачку и куда складывать загруженные файлы. Скачиваются только текстовые документы и только с одного сайта. Ссылки заменяются на относительные, поэтому по загруженным файлам можно передвигаться в браузере в оффлайне.

Скрипт ни в коей мере не предназначен для замены wget, это просто программистская разминка.

Tags:

  • 1
skoljko stradanij lish by ne uchitj Erlang

Дойдут и до эрланга руки. Эта задачка как раз подойдёт попрактиковаться.

с эрлангом страданий поначалу больше ))
http://what-me.livejournal.com/22914.html

Edited at 2017-01-07 09:58 pm (UTC)

  • 1