我需要在特定请求中向表中插入数千条记录。现在我就是这样做的:(让我们说我尝试将相同的咖啡倒入数千杯)
@cups.each do |cup|
cup.delay.pour @coffee
end
现在通常这不是什么大问题,但是当有数万个杯子时,即使每个任务都在后台处理,添加任务本身也需要一段时间。所以我注意到它开始添加几百个任务,然后请求超时,其余的不会被添加到作业队列中。
我使用的是独角兽,到目前为止,我通过荒谬地增加允许的超时时间来处理这个问题(比如200秒)并且它正在运行。但我无法永远这样做。任何人都有关于如何正确处理这个问题的任何提示?感谢
答案 0 :(得分:1)
尝试使用Active record mass insert。
CONN = ActiveRecord::Base.connection
TIMES = 10000
inserts = []
TIMES.times do
inserts.push "(3.0, '2009-01-23 20:21:13', 2, 1)"
end
sql = "INSERT INTO user_node_scores (`score`, `updated_at`, `node_id`, `user_id`) VALUES #{inserts.join(", ")}"
CONN.execute sql