Фоновая обработка в Rails - PullRequest
1 голос
/ 10 мая 2010

Определенная функция в моем контроллере занимает много времени для обработки (тяжелая работа с БД). Поэтому, когда мой пользователь нажимает «отправить» в форме, ему приходится ждать завершения процесса, что довольно долго. Есть ли способ, что при «отправке» пользователь перенаправляется к следующему представлению без какой-либо задержки, пока обработка продолжается в бэкэнде, не заставляя пользователя ждать? Спасибо и ура!

Ответы [ 3 ]

2 голосов
/ 10 мая 2010

Когда пользовательский запрос сделан, поставьте в очередь задание и затем перенаправьте запрос туда, куда вы хотите.

Существует два популярных Ruby Gems для обработки задания:

ЗадержкаЗадание
Resque

Задержанное задание, вероятно, проще в настройке, поскольку для него не требуется Redis.

0 голосов
/ 11 мая 2010

Мне кажется, что вам нужно раскошелиться на процесс, который занимает так много времени. Например:

fork { "this code is being ran in background" }

Проблема в том, что этот код не будет хорошо работать с SQL, так как соединение не является постоянным. Чтобы справиться с этой проблемой, я какое-то время использовал плагин spawn с отличными результатами.

0 голосов
/ 10 мая 2010

Для подобных вещей я обычно выкидываю вещи в очередь базы данных, а затем использую cronjob для фактического запуска.

Например, скажем, мне пришлось отправить электронное письмо всем клиентам, использующим программное обеспечение. Я поместил бы сообщение в таблицу базы данных вместе с некоторой информацией о том, кто должен его получить, и тогда задание cron фактически осуществило бы отправку.

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