Несмотря на то, что вариант постоянной задачи на основе Rails является опцией, вы можете рассмотреть более упорядоченные системы, такие как delayed_job или Starling для управления рабочей нагрузкой.1006 * Я бы посоветовал не запускать что-либо в cron
, поскольку затраты на раскрутку целого стека Rails могут быть значительными.Запускать его каждые несколько секунд нецелесообразно, так как время разгона на Rails обычно составляет 5-15 секунд в зависимости от вашего оборудования.Делать это несколько раз в день, как правило, нет ничего сложного.
Простая альтернатива - создать рабочий цикл в скрипте, который вы можете использовать с runner
:
interval = 15.minutes
next_time = Time.now + interval
while (true)
if (stuff_to_do?)
do_stuff
end
# Figure out how much time is left before the next iteration
delay = next_time.to_i - Time.now.to_i
if (delay > 0)
# If ahead of schedule, take a break
sleep(delay)
end
end
Недостатком этого является то, что стек Rails будет оставаться в памяти до тех пор, пока выполняется этот фоновый процесс, но это компромисс между огромными обращениями к процессору и обращением к памяти.