Обработка долгосрочных задач - PullRequest
0 голосов
/ 19 февраля 2012

У меня есть веб-приложение, которое выполняет одну долгосрочную задачу - создание отчета в формате PDF.Различные графики генерируются, и это занимает около 15 секунд для обработки всего.Отчет генерируется пользователем.

Обработка отчета во время запроса в настоящее время приводит к задержке процесса, и, что более важно (учитывая, что использование этого веб-сайта не является интенсивным), время ожидания запроса иногда истекает.

IПоэтому я перерабатываю архитектуру этого раздела приложения (Rails 2.3.8).Чтобы поместить это в контекст, маловероятно, что в день будет сгенерировано более пары таких отчетов, и это чрезвычайно нишевое приложение, поэтому значительное дальнейшее масштабирование не является серьезной проблемой.Тем не менее, я собираюсь сдать проект в будущем, поэтому стабильность будет.

Самое очевидное решение, которое я думаю, - это использовать Spawn для генерации отчета и запуска ссылки на скачиваниепользователь по электронной почте, как только он завершен.Другое решение, которое я рассмотрел, - DelayedJob .

Может ли кто-нибудь, кто сделал нечто подобное, порекомендовать один подход другому?

1 Ответ

0 голосов
/ 20 февраля 2012

delayed_job или какой-либо другой механизм организации очередей будет проще всего настроить.С delayed_job вы просто ставите своего работника в очередь вместо создания PDF, и фоновый процесс на сервере будет работать из очереди, выполняя любую доступную работу.Использование spawn для разветвления всего процесса кажется немного сложным и, кажется, не подходит для других второстепенных, но все еще более длительных задач (таких как отправка электронных писем).

...