?

Log in

No account? Create an account
Previous Entry Share
Многопоточная качалка на Erlang
what_me
Ну вот, моя первая программа на эрланге. https://github.com/onokhov/erlang_web_crawler/

Язык занятный. Параллелить и устраивать межпроцессное общение просто. Но остальное писать неудобно, думаю, что просто с непривычки. И документацию я ещё не прочитал. Осилил только getting_started, описания модулей string, list, re, httpc и ещё некоторых.
Сторонние модули использовать не хотелось, поэтому то, что в штатных модулях не нашел, делал сам.

Сравнил по производительности с перловой качалкой, эрланговская получилась немного быстрее. За минуту с форума glav.su перловая вытянула 26МБ, а эрланговская 26,7МБ.

Хотелось бы критики по коду от людей эрланг знающих.

Update: Закоммитил правки по комментариям. Заменены паттерны, ++ заменен на [|], использованы list comprehensions.
Update 2: Отказ от prespawn. И правки по стилю
Update 3: Багфикс в receive_text_data/2. Правки по стилю
Tags: ,

  • 1
io:format("Resume download session~n"),
crawler([], UrlsRestored, FreeWorkerPids, SeenUrlsRestored, [], Host);
_ ->
crawler([], [Url], FreeWorkerPids, [], [], Host)

you ignore Url when restoring. it may prove very inconvenient in real usecases. you should never ignore the request of the user

you may either
issue a warning and let the user decide about the old session.
or
ADD the given Url to the session and continue the old job.

Да, но это уже не эрланговый вопрос. Такого рода недочеты в программе есть ещё. Дело в том, что эта утилита не предназначена для использования. Это упражнение.

  • 1