У меня есть список задач, которые должны быть выполнены в фоновом режиме (Rails 5.0.1) в следующемDaemon против Runner против Rake задач против активной Работы
порядка-- Скачать почтовый файл
- Извлеките файл XML из него (ср. размер ~ 400 MB)
- Анализировать (Nokogiri XML :: читатель) файл XML для записей, удовлетворяющих определенным ограничениям, и если найден, добавить их в базу данных (Postgres)
- Получить некоторые адреса электронной почты из базы данных и отправить их по электронной почте
Это нужно делать каждый день без какого-либо человеческого ввода. Прямо сейчас, я использую Rails runner, чтобы сделать все это и планировать его, используя cron («Whenever» gem). Таким образом, используется 'бегун' правый подход? Есть ли менее интенсивный объем памяти подход, который я могу использовать, учитывая, что интерфейс (панель администратора) будет недоступен? Как насчет активной работы, рейка, демонов и т. Д.?
Разбор XML будет узким местом, независимо от того, как вы планируете работу. Если вам нужен менее интенсивный подход к памяти, попробуйте найти что-то, что не включает в себя синтаксический анализ файла размером 400 МБ в память. – max
@max В настоящее время я использую XML-ридер Nokogiri, который не загружает xml в память, а читает строки последовательно, анализируя узлы. Есть ли лучшее решение? Может быть, расщепление xml-файла? – rohank