2016-03-08 2 views
0

В моем приложении Rails пользователь может загрузить файл, а затем то, что мне нужно сделать, это: когда файл загружен, я хочу запустить задачу rake, которая анализирует файл и передает все таблицы в базе данных, и в зависимости от того, насколько велик файл, это может занять некоторое время. Я предполагаю, что sth как >> система «rake task_name» в моем контроллере будет выполнять эту работу.Вызов функции рейка в веб-запросе

Однако это лучшая практика? Это безопасно? Потому что таким образом любой пользователь начнет процесс грабли. В этом Railcast они рекомендуют использовать рейк в фоновом режиме. Что было бы альтернативой или обычной практикой?

+1

Почему бы не просто запустить задачу рейка каждые пять минут, которая проверяет наличие новых файлов и обрабатывает их по мере необходимости? Другой вариант - использовать ActiveJob или другую библиотеку фоновой обработки. – Carpetsmoker

+0

Лучшей практикой было бы отложенное/асинхронное задание. В основном загрузка запускает Job, который обрабатывается рабочим. Я могу подумать о нескольких других способах кожи этой кошки. – omarvelous

+0

Я пытался сделать идею Active Job. Active Job работает только с Rails 4, я использую Rails 3.2 для этого приложения. Я попробую [Задержка задания] (https://github.com/collectiveidea/delayed_job) – Jei

ответ

0

Я использую Rails 3.2, поэтому я не мог использовать Active Job. Я использовал Sidekiq и отлично работал. Проверить очень полезный учебник here

Смежные вопросы