Лучшая практика для Rails App для запуска длинной задачи в фоновом режиме? - PullRequest
32 голосов
/ 03 февраля 2009

У меня есть приложение Rails, которое, к сожалению, после запроса к контроллеру должно выполнить некоторое перехват, который занимает некоторое время. Каковы лучшие практики в Rails для обеспечения обратной связи или прогресса в выполнении долгосрочной задачи или запроса? Эти методы контроллера обычно длятся более 60 секунд.

Меня не интересует клиентская сторона ... Я планировал получать Ajax-запрос каждую секунду или около того и отображать индикатор прогресса. Я просто не уверен в лучшей практике Rails, я создаю дополнительный контроллер? Есть ли что-нибудь умное, что я могу сделать? Я хочу, чтобы ответы были сосредоточены на стороне сервера с использованием только Rails.

Заранее спасибо за помощь.

Edit:

Если это имеет значение, запрос http для PDF-файлов. Затем я использую Rails вместе с Ruport для создания этих PDF-файлов. Проблема в том, что эти PDF-файлы очень большие и содержат много данных. Имеет ли смысл использовать фоновую задачу? Давайте предположим, что в среднем PDF занимает от одной минуты до двух минут, из-за этого мое приложение Rails не будет отвечать на любые другие запросы сервера в течение этого времени?

Редактировать 2:

Хорошо, после дальнейшего изучения кажется, что мое Rails-приложение действительно не отвечает ни на какие другие HTTP-запросы после поступления запроса на большой PDF. Итак, я предполагаю, что теперь возникает вопрос: какой механизм потоков / фона лучше всего использовать? Он должен быть стабильным и поддерживаемым. Я очень удивлен, что в Rails нет чего-то подобного.

Редактировать 3:

Я прочитал эту страницу: http://wiki.rubyonrails.org/rails/pages/HowToRunBackgroundJobsInRails. Я хотел бы прочитать о различных опытах с этими инструментами.

Редактировать 4:

Я использую "modrails" Passenger Phusion, если это имеет значение.

Редактировать 5:

Я использую 64-битную Windows Vista для своей машины для разработки; тем не менее, моя производственная машина - Ubuntu 8.04 LTS. Стоит ли переходить на Linux для моей машины для разработки? Будут ли представленные решения работать на обоих?

Ответы [ 14 ]

0 голосов
/ 23 февраля 2009

Я использовал spawn раньше и определенно рекомендую его.

Невероятно прост в настройке (чего нет во многих других решениях) и хорошо работает.

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

Я знаю, что вы сказали, что не беспокоитесь о клиентской стороне, но я подумал, что вы можете найти это интересным: Growl4Rails - Уведомления в стиле Growl, разработанные практически для того, что вы делаете, судя по их примеру использовать.

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

Я использую фоновое задание (http://codeforpeople.rubyforge.org/svn/bj/trunk/README) для планирования задач. Я строю небольшой сайт администрирования, который позволяет администраторам сайтов запускать все, что вы, и я запускаю из командной строки из приятного веб-интерфейса.

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

Существует совершенно новый Growl4Rails ..., предназначенный для этого конкретного случая использования (в том числе и для других).

http://www.writebetterbits.com/2009/01/update-to-growl4rails.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...