Ruby 在特定的时间范围内运行rake脚本

Ruby 在特定的时间范围内运行rake脚本,ruby,rake,Ruby,Rake,我需要在特定时间运行rake脚本。例如,10分钟、1小时等,如果脚本尚未完成,请停止脚本 为什么我需要这个?因为几个小时后,记忆就满了 有什么建议吗 谢谢 我想你应该首先考虑是什么使得这个脚本占用了这么多内存。 一件事是从数据库中加载大量记录,并将它们附加到一个数组中 但假设你已经尽了全力, 我会这样做 LIVE_FOR = 1.hour def run! finish_before = LIVE_FOR.from_now array = get_the_array # some b

我需要在特定时间运行rake脚本。例如,10分钟、1小时等,如果脚本尚未完成,请停止脚本

为什么我需要这个?因为几个小时后,记忆就满了

有什么建议吗


谢谢

我想你应该首先考虑是什么使得这个脚本占用了这么多内存。 一件事是从数据库中加载大量记录,并将它们附加到一个数组中

但假设你已经尽了全力, 我会这样做

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

但实际上,我会首先尝试解决内存泄漏的原因。

您不能签入脚本本身吗?谢谢matthew,内存问题是因为任务处理的是大量活动记录!但这不应该是个问题。你试过做一个Model.find_每个,这将加载1000个批次,允许它们被垃圾收集。我建议创建另一个问题,以便我们可以帮助改进此脚本。