[RoR ] 為何Thread會有漏做的情形?
環境:
Ruby 1.8.6
Rails 2.2.2
狀況:
我要從別的網站上抓資料之後儲存到自己的資料庫中。
由於資料是一筆一筆的抓,
所以我想用Thread同時分頭進行。
程式大致上有點像這樣
datas.each{|data|
Thread.new do
//do something to get data...
A.create(.....)
end
}
這時候執行結果是正常的,
但當我要多做一步處理時,像這樣
datas.each{|data|
Thread.new do
//do something to get data...
a=A.create(.....)
a.save!
//do something
b=B.create()
b.a_id=a.id;
puts "a.id=#a.id"
b.save!
end
}
A的部份有順利完成,
B的部份卻只做到data的最後一筆,中間的都漏做了,
奇怪的是puts "a.id=#a.id"這行卻又全部有印到,
而且把Thread的部份拿掉讓它慢慢執行,結果卻又是正常的。
而database的連線數我也已經提高了,
請問能幫我分析一下可能的原因嗎?謝謝。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.120.55.7
※ 編輯: neverfly 來自: 59.120.55.7 (03/08 18:10)
※ 編輯: neverfly 來自: 59.120.55.7 (03/08 18:13)
推
03/08 18:12, , 1F
03/08 18:12, 1F
→
03/08 21:23, , 2F
03/08 21:23, 2F
→
03/09 00:09, , 3F
03/09 00:09, 3F
Ruby 近期熱門文章
PTT數位生活區 即時熱門文章