У меня есть веб-приложение, которое имеет одну длинную задачу - создание отчета в формате PDF. Создаются различные графики, и для обработки требуется всего около 15 секунд. Отчет создается пользователем.Обработка длительных задач
Обработка отчета во время запроса в настоящее время заставляет процесс быть связанным, и что более важно (учитывая, что использование этого веб-сайта не является тяжелым), иногда время ожидания запроса.
Я поэтому перепроектирую архитектуру этого раздела приложения (Rails 2.3.8). Если говорить об этом в контексте, маловероятно, что в день будет генерироваться более двух таких отчетов, и это крайне нишевое приложение, поэтому существенное дальнейшее масштабирование не является серьезной проблемой. Я собираюсь передать проект в будущем, хотя стабильность - это.
Наиболее очевидным решением является использование Spawn для создания отчета и запуск ссылки для загрузки пользователю по электронной почте после его завершения. Другое решение, которое я рассмотрел, - DelayedJob.
Может ли кто-нибудь, кто сделал что-то подобное, рекомендовать один подход над другим?
Да, и я думаю, что мне интересно, возможно ли другое преимущество в том, что другие задачи, которые в настоящее время выполняются синхронно (например, забытые пароли с паролями), но которые иногда могут потребоваться, могут быть поставлены в очередь с использованием того же механизма. Я полагаю, что недостатком является то, что фоновый процесс работает все время, а не процесс, который разветвляется, когда это необходимо. Чтобы перевернуть его вокруг, есть ли какие-либо обстоятельства, когда кто-то порекомендовал бы развернуть процесс с помощью Spawn? – sparky