Ensure clients are recycled properly

pull/3/head
Omar Roth 7 years ago
parent a27c556904
commit ecb1999795

@ -63,7 +63,11 @@ threads.times do
ids << id ids << id
end end
pool << client
loop do loop do
client = get_client(pool)
if ids.empty? if ids.empty?
search(random.base64(3), client) do |id| search(random.base64(3), client) do |id|
ids << id ids << id
@ -72,10 +76,9 @@ threads.times do
if rand(300) < 1 if rand(300) < 1
pool << make_client(URL, CONTEXT) pool << make_client(URL, CONTEXT)
client = get_client(pool)
end end
time = Time.now
begin begin
id = ids[0] id = ids[0]
video = get_video(id, client, PG_DB) video = get_video(id, client, PG_DB)
@ -104,7 +107,7 @@ threads.times do
end end
end end
# io << Time.now << " 200 GET www.youtube.com/watch?v=" << video.id << " " << elapsed_text(Time.now - time) << "\n" pool << client
end end
end end
end end
@ -113,7 +116,7 @@ top_videos = [] of Video
spawn do spawn do
loop do loop do
top = rank_videos(PG_DB, 120) top = rank_videos(PG_DB, 40)
client = get_client(pool) client = get_client(pool)
args = [] of String args = [] of String
@ -121,16 +124,18 @@ spawn do
args << "($#{top.size}) " args << "($#{top.size}) "
args = args.join("") args = args.join("")
videos = [] of Video
PG_DB.query("SELECT * FROM videos d INNER JOIN (VALUES #{args}) v(id) USING (id)", top) do |rs| PG_DB.query("SELECT * FROM videos d INNER JOIN (VALUES #{args}) v(id) USING (id)", top) do |rs|
rs.each do rs.each do
video = rs.read(Video) video = rs.read(Video)
top_videos << video videos << video
end end
end end
pool << client top_videos = videos
sleep 5.minutes pool << client
end end
end end

Loading…
Cancel
Save