Зависит от того, что означает «обработка».
Как правило, это не будет надежным, если обработка подразумевает использование стека Rails - поскольку главный процесс, освобожденный запросом, может быть назначен другому запросу пассажиром, и вещи могут ошибаться.
Также Пассажир может завершить работу главного процесса и, следовательно, экземпляра Rails в некоторых условиях (сокращение пула свободных экземпляров и т. Д.).
Как правило, это может привести к утечке процесса, неожиданным блокировкам, состояниям гонки, ошибкам приложения при завершении работы и т. Д.
Я бы предложил использовать работников, работающих вне стека Apache / Passenger, например, используя кластеризованное BackgrounDRb или другое решение (вы упомянули Resque).
Есть еще одна идея, которую я сейчас использую для заданий cron с моим приложением. Мой crontab - это всего лишь несколько wget
для действий с долго выполняющимися задачами. Вы можете сделать нечто подобное в ruby fork с OpenURI по требованию. Представьте себе приложение pinging само по HTTP. Разветвленному процессу больше не нужны Rails - он просто обращается к странице задачи, и следующий Пассажир обрабатывает запрос и управляет экземпляром приложения для этого специального запроса.
В случае, если Passenger убивает родительский элемент fork и, следовательно, разветвляет процесс - другой экземпляр Rails должен продолжать обрабатывать http-запрос.