Как я могу управлять длительным процессом из приложения Rails?

Я создаю приложение для изучения Rails, и я не знаю, как это сделать.

У меня есть форма, где пользователь вводит некоторые данные. Данные проверяются, и должен запуститься процесс на стороне сервера (процесс может занять от 5 минут до 2 часов). Я хотел бы иметь возможность всегда знать состояние процесса и иметь возможность его убить. То, что я не уверен, как сделать, это начать процесс. Я знаю о system, обратных кавычках и всех способах выполнения внешних команд из кода Ruby... дело в том, что если я сделаю это с контроллера, будет ли сервер по-прежнему обрабатывать запросы от других пользователей? Кроме того, это должно быть запущено с контроллера? Одна из вещей, которые мне нужно сделать, это отобразить вывод процесса внутри страницы (по мере его выполнения).

Как запустить и управлять (убить/перезапустить) длительный процесс в Rails? Как мне сделать так, чтобы каждый пользователь мог запустить свой процесс?


person Geo    schedule 27.02.2010    source источник


Ответы (2)


Я думаю, вам следует взглянуть на delayed_job. Он должен делать именно то, что вам нужно.

person Jimmy Stenke    schedule 27.02.2010
comment
delayed_job поддерживается даже на героку. - person Marc-André Lafortune; 27.02.2010

Попробуйте использовать плагин для фоновых заданий: http://backgroundrb.rubyforge.org/ Он имеет хорошие функции и сообщество. поддерживать.

person Zepplock    schedule 27.02.2010
comment
Я не могу слушать ни на одном порту. Единственное решение - индивидуальное. - person Geo; 27.02.2010
comment
Я голосую за delayed_job, мы только что перешли с backgroundrb на delayed_job - person allenwei; 27.02.2010