2012-01-04 4 views
1

Мне нужно запустить скрипт рейка для определенного времени. Например, 10 минут, 1 час и т. Д., И если сценарий не закончен, все равно остановите его.Запуск сценария рейка для определенного временного диапазона

Зачем мне это нужно? Потому что через несколько часов память заполнена!

Любое предложение?

Благодаря

+0

Не можете ли вы проверить сам сценарий? –

ответ

0

Я думаю, вы должны сначала рассмотреть, что делает этот скрипт использовать так много памяти.

(одна вещь будет загружая много записей из базы данных, и добавление их в массив)

Но если вы уже сделали все возможное, я хотел бы сделать что-то вроде этого.

LIVE_FOR = 1.hour 

def run! 
    finish_before = LIVE_FOR.from_now 

    array = get_the_array # some big collection to operate on 

    array.each do |object| 
    while Time.now < finish_before 
     ... 
    end 
    end 
end 

Но на самом деле, я сначала попытался решить, почему у вас есть утечка памяти.

+0

Спасибо, Мэтью, проблема с памятью, потому что задача работает с тысячами активных записей! – jgiunta

+0

это не должно быть проблемой. Вы пробовали делать «Model.find_each», это будет загружать их партиями по 1000, позволяя им собирать мусор. Я предлагаю создать еще один вопрос, чтобы мы могли улучшить этот сценарий. –