2012-11-09 2 views
1

В моем приложении мне нужно выполнить задачу каждые 5 минут. Сама задача довольно скудная, так что это не проблема: дело в том, что при загрузке среды Rails использует почти весь процессор сервера. Сейчас я использую whenever с кодом, как это в моем schedule.rb:Выполнение повторяющихся задач в Rails без загрузки полной среды

every 5.minutes do 
    runner Task.perform 
end 

Но цена слишком велика. Есть ли способ выполнить такие задачи в предварительно загруженной среде? Или любое другое лучшее решение?

ответ

0

Вы можете использовать задание cron или настроить его для запуска в сценарии bash. Это будет иметь то преимущество, что вы не будете привязаны к вашему приложению.

+0

Вот что «когда угодно». Если я правильно прочитал вопрос OP, проблема заключается в стоимости загрузки всего Rails-стека каждые пять минут. –

1

Рассмотрите возможность использования фонового процесса (много драгоценных камней, в частности, delayed job) и реализуют простые «хроны» в коде с чем-то петлевым опросом как

def perform 
    last = Time.now 
    while true 
    if last.sec % (5 * 60) != 0 
     do_task 
     last = Time.now 
    end 
    end 
end 

Внимание: этот пример имеет больше дыр, чем ломтик швейцарский сыр. Напишите что-то лучшее :-)

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

  • Нет связанных вопросов^_^