在特定时间将过期的sql条目移动到另一个数据库中

时间:2015-08-02 14:24:36

标签: ruby-on-rails ruby sqlite ruby-on-rails-4

我正在建立一个涉及班次管理的铁路网站。我正在使用一个单独的数据库(SQLlite3)来存档过去的班次,因为我需要对未来/现在的班次进行操作,而且我不希望它们因为很少访问的档案而变慢。我想在结束时自动将每个班次移动到新数据库。

我知道我可以经常使用cron进行检查,但有没有办法在特定时间进行检查?我不需要确切的代码,只是正确方向上的一点会有所帮助。

提前致谢。

2 个答案:

答案 0 :(得分:0)

我不确定您关于SQL的问题的第一部分。但是,在Linux中约为cron(如果这是你要求的话)。您可以在每个间隔时间或特定时间致电cron,例如

如果你想在18:00调用脚本

0 18 * * * root bash /pvt/scripts/stat.sh > /dev/null 2>&1

如果你想在03:35小时调用脚本

35 3 * * * root bash /pvt/scripts/stat.sh > /dev/null 2>&1

如果你想每5分钟调用一次脚本

*/5 0 * * * root bash /pvt/scripts/stat.sh > /dev/null 2>&1

因此,如果您想在特定时间调用脚本,可以使用cron执行此操作。

答案 1 :(得分:0)

对我来说,我会创建一个ActiveRecord回调,然后使用它来使用sidekiq

之类的内容来安排后台任务

这是演示的示例代码

班次代码:

class Shift < ActiveRecord::Base
  after_update :archive_shift, if: :shift_ended?

  private

  def archive_shift
    ShiftArchiver.perform_async(id)
  end

  def shift_ended?
    # some condition
  end
end

归档类代码:

class ShiftArchiver
  include Sidekiq::Worker

  def perform(shift_id)
    # archiving code
  end
end

这样,归档代码只会在班次结束时运行,并且会在后台运行,因此不会阻止任何请求。

有关sidekiq over here

的更多信息