2
我有一个用ruby写的模块,它连接到postgres表,然后应用一些逻辑和代码。处理轨道中的连接中断
下面是一个示例代码:
module SampleModuleHelper
def self.traverse_database
ProductTable.where(:column => value).find_each do |product|
#some logic here that takes a long time
end
end
end
的productTable已经超过300万条记录。我使用where子句来缩短检索的记录数。
但是我需要使代码连接证明。有时连接中断,我必须从头开始遍历表。我不想要这个,而是应该从停止的地方开始,因为每个记录所花费的时间太多。
什么是最好的方式,使代码开始离开的地方?
一种方法是在数据库中创建一个表,记录主键(id)停在哪里并从那里再次启动。但是我不想在数据库中创建表格,因为有很多这样的过程。
但如何从同一点这个功能的简历,如果我再次启动功能:
的线沿线的东西吗?每次调用traverse_products时,计数器和重试都初始化为零。 –
你不需要再次启动它,因为它会自己“重试”任何错误。你只需要插入正确的错误类,因为我不知道你期望提出什么样的错误... –
这是伟大的...但我不认为会符合我的目的。我需要在cron任务中运行一个函数,并且希望它从前一天停止的地方运行。 –