LINUX.ORG.RU

Есть ли что готовое для периодического забора файлов

 , ,


0

3

Как бы не сложно самому написать и даже написал простой вариант, но если хотеть правильной работы надо учесть обработку ошибок и т.п.

В общем, задачка. Надо регулярно раз в сутки дергать страничку на одном из сайтов, парсить ее и по результатам парсинга скачивать с сайта новые файлы. Объем примерно 2-5 Гб в неделю, файлов скорее всего меньше десяти в сутки. Страничка статическая, парсинг простейший, не в том суть.

А что могут быть ошибки: сайт не доступен, доступен, но возвращает ошибку, подвис. Файлы могут качаться медленно или скачаться с ошибкой. Нечасто, но может случиться, что не до конца докачались. Или что допустим, время было пропущено. Соответственно нужны проверки, лимиты времени и тп.

Чтобы не изобретать велосипед, пришло в голову, что может есть что готовое для этой цели, подстраиваемое после несложной доработки?

Ну и чтобы два раза не вставать, какой vps-хостинг подешевле под это можно посоветовать?

★★★★★

может есть что готовое для этой цели, подстраиваемое после несложной доработки?

cron, xsltpoc, wget..можно ещё makе добавить чтобы дважды одну работу не переделывать. И синхронизировать в облако.

скрипт выйдет не сильно длиннее топика, чё-тут ещё советовать..А! вот: «пиши код блждат!!». Пока ждёшь совета/ответа, уже-бы всё сделал

MKuznetsov ★★★★★
()
Ответ на: комментарий от MKuznetsov

Ну и при чем тут cron, wget, которые и так используются? Не хотелось велосипедить обработку ошибок типа недоступности сервера и что в этом случае надо подождать полчаса и повторить и т.п. Тем более такое отладить тестами у меня не получится. А случись ситуация что-нибудь не так будет даже просто из-за опечатки.

Мне просто казалось, что сценарий типа «периодически корректно таскать файлы с сервера по http» мог уже кто-то сделать и отладить.

praseodim ★★★★★
() автор топика
Последнее исправление: praseodim (всего исправлений: 1)
Ответ на: комментарий от slovazap

Не помнил про эти параметры.

Ладно, но в целом кажется придется полностью писать скриптец.

praseodim ★★★★★
() автор топика
Ответ на: комментарий от praseodim

Тем более такое отладить тестами у меня не получится.

Различные сценарии неполадок при выполнении HTTP запросов вполне тестируются, лишь бы была библиотека HTTP Mocking для твоего языка либо желание её написать.

theNamelessOne ★★★★★
()
Ответ на: комментарий от theNamelessOne

Делаю на Perl. Как мне отладить ситуации:

1) VPS хостинг лежал и скрипт не работал

2) Скрипт вырубили во время работы

3) Сервер откуда надо скачать html не доступен.

4) Доступен, но очень медленно.

5) html скачался, но не целиком.

6) zip-файлы недоступны

7) Доступны, но качаются очень медленно (больше суток будет доиться, если не отвалится с недокаченным файлом), надо передернуть, чтобы заново быстрее качало.

8) Скачался битый или не полностью. Надо unzip -t сделать и заново скачать. Но не зацикливаться. Если все глючит и медленно, подождать час, два, 10...

9) чего-нибудь забыл.

Думал, может очень похожие задачи кем-то решались и есть более-менее готовые, но не слишком монструозные решения, которые можно на vps поставить.

Если не заморачиваться возможными ошибками скриптец у меня уже есть и работает, строчек 10 у него.

praseodim ★★★★★
() автор топика
Последнее исправление: praseodim (всего исправлений: 2)
Ответ на: комментарий от praseodim

1-2 зависит от того, как скрипт определяет время последнего запуска (T1) и время последнего удачного завершения (T2) (например, их можно писать в файл). Условие возникновения ситуации 1 — T1 отсутствует или было слишком давно, ситуации 2 — T2 < T1. В тесте симулируешь такие ситуации и проверяешь, выполняется ли твой скрипт корректно.

3-8 вполне решается с помощью упомянутой библиотеки (пример для ruby, для перла сам нагуглишь).

theNamelessOne ★★★★★
()
Ответ на: комментарий от praseodim

1-2. Записывать в лог событие успешной проверки скачанного.
При каждом запуске проверять дату/индекс последней успешной закачки.
Или сохранять в каталог с именем даты/индекса.
Временные файлы сохранять в каталог суффиксом .tmp, и переименовывать только после успешной проверки.
3-8. Завершать выполнение скрипта с ошибкой при ненулевом коде возврата любой из команд.
Поставить таймаут выполнения задачи, завершать задачу с ошибкой по истечении отведённого времени.
Прописать запуск в расписании чаще, чем требуется, но при старте поставить проверку на последнее успешное выполнение и сразу выходить с успешным кодом возврата при её прохождении.
9. Лог с ошибками за неделю отправлять на почту админа и при необходимости вносить коррективы.

ArcFi
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.