LINUX.ORG.RU
ФорумAdmin

Очередь задач по обработке файлов

 


1

1

Задача: на FTP сервер закачиваются файлы. По триггеру в incron я получаю их имена. Нужно их обрабатывать последовательно, по мере получения. Ситуация, когда предыдущий файл ещё не обработался но уже прилетел один или несколько новых - штатная. Параллельная обработка не вариант, файлы слишком большие, сервер хоть и мощный, может обрабатывать только один файл за раз. Прозреваю нужен способ организации очереди.

Вопрос: что есть из модного молодёжного, чтобы так последовательно обрабатывать файлы? В идеале нужна отказоустойчивость, чтобы очередь не терялась при каких-то нештатных ситуациях.
Смотрел ts/task-spooler ( https://www.ostechnix.com/add-linux-commands-queue-execute-one-one/), заставить это нормально работать сходу не получилось, продолжаю его вяло ковырять.

★★★★★

Информации слишком мало. Как ты передаешь имя файла в обработчик, например. Ты ли его писал? Для очередей есть rabbitmq - он именно сервер очередей. Но если у тебя только имя файла, то можно использовать очередь redis'а.

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

Пока я додумал решение только до передачи имени файла в incron моему скрипту. На этом можно было бы остановиться, если бы скрипты можно было плодить безнаказанно.

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

А зациклить скрипт, чтобы он после того, как сделал работу не заканчивал выполнение, а забирал из очереди новое имя файла (и ждал если там ничего нет), а потом шел в следующую итерацию?

adn ★★★★
()

По inotify получаешь имя файл, делаешь линк на него из временного каталого под именем unixtime+микросекунды+имя файла.

воркер берет самый старый файл из временного каталога, пока они там есть, дальше спит до inotify IN_CREATE.

Легко реализуется на любом вменяемом скриптовом языке, где есть поддержка inotify.

IMHO на перле это делается не приходя в сознание путем копирования примеров из документации :)

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