Ensure clients are recycled properly

This commit is contained in:
Omar Roth 2018-02-08 20:19:44 -06:00
parent a27c556904
commit ecb1999795

View File

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