У меня есть приложение Ruby on Rails 5.1, в котором я создаю PDF-файлы, которые представляют записи в базе данных.
Мне нужно заархивировать эти PDF-файлы, чтобы они могли храниться вне приложения.
Это в основном одноразовое событие, поэтому мне не нужна постоянная синхронизация.
У меня есть рабочий код, который преобразует каждую запись в файл PDF, добавляет этот файл в ZIP-файл, встроенный в память,и затем возвращает этот ZIP пользователю в качестве файла для загрузки.
Это работает, но если у вас много записей записей, время ожидания веб-сервера истечет, поэтому мне нужно найти лучший подход, который не перегруженвся память сервера.
Размер файла ZIP может составлять 200 МБ, при этом в нем содержится более 10 000 файлов PDF.
Я размещаю приложения в своих собственных контейнерах, поэтому могу получить доступ к файлу сервера.каталог, если это необходимо, но каждое повторное развертывание или завершение работы контейнера приведет к его удалению.
Подход, который я думаю о реализации, заключается в следующем:
- Запустите архив вфоновый процессор, который отправляет пользователю электронное письмо по окончании ссылки на скачивание.
- Разбиение записей в отдельный ZIP для каждых 100 записей или около того (чтобы избежать проблем с памятью и отдельных файлов, которые слишком велики).
- Храните ZIP-файлы в каталоге контейнера в течение 24 часов и позволяйте пользователям загружать архивы по своей ссылке электронной почты (у них будет отдельная ссылка для каждого ZIP-файла).
- Стирать ZIP-файлы tmpна контейнере через 24 часа.
Впервые я совершил что-то подобное;разумен ли такой подход?Что может быть лучше для достижения цели архивирования PDF-файлов с сервера?