Fix several bugs in connection pool
This commit is contained in:
parent
01d16ec6af
commit
a236d7a4e8
|
@ -16,32 +16,47 @@ CONTEXT.add_options(
|
||||||
OpenSSL::SSL::Options::NO_SSL_V3
|
OpenSSL::SSL::Options::NO_SSL_V3
|
||||||
)
|
)
|
||||||
POOL = Deque.new(30) do
|
POOL = Deque.new(30) do
|
||||||
HTTP::Client.new(URL, CONTEXT)
|
client = HTTP::Client.new(URL, CONTEXT)
|
||||||
|
client.connect_timeout = Time::Span.new(0, 0, 0, 5)
|
||||||
|
client
|
||||||
end
|
end
|
||||||
|
|
||||||
# Refresh all the connections in the pool by crawling recommended
|
# Refresh all the connections in the pool by crawling recommended
|
||||||
spawn do
|
spawn do
|
||||||
# Arbitrary start value
|
# Arbitrary start value
|
||||||
id = Deque.new(50,"0xjKNDMgE54")
|
id = Deque.new(50, "0xjKNDMgE54")
|
||||||
while true
|
loop do
|
||||||
client = get_client
|
client = get_client
|
||||||
|
if rand(100) < 1
|
||||||
|
client = HTTP::Client.new(URL, CONTEXT)
|
||||||
|
client.connect_timeout = Time::Span.new(0, 0, 0, 5)
|
||||||
|
end
|
||||||
time = Time.now
|
time = Time.now
|
||||||
|
|
||||||
begin
|
begin
|
||||||
video = get_video(id[rand(id.size)], false)
|
video = get_video(id[rand(id.size)], false)
|
||||||
|
rescue ex
|
||||||
|
puts ex
|
||||||
|
POOL << client
|
||||||
|
next
|
||||||
|
end
|
||||||
|
|
||||||
rvs = [] of Hash(String, String)
|
rvs = [] of Hash(String, String)
|
||||||
|
if video.info.has_key?("rvs")
|
||||||
video.info["rvs"].split(",").each do |rv|
|
video.info["rvs"].split(",").each do |rv|
|
||||||
rvs << HTTP::Params.parse(rv).to_h
|
rvs << HTTP::Params.parse(rv).to_h
|
||||||
end
|
end
|
||||||
rvs.each do |rv|
|
|
||||||
id << rv["id"]
|
|
||||||
end
|
|
||||||
puts "#{Time.now} 200 GET #{elapsed_text(Time.now - time)}"
|
|
||||||
rescue ex
|
|
||||||
next
|
|
||||||
ensure
|
|
||||||
POOL << client
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
rvs.each do |rv|
|
||||||
|
if rv.has_key?("id")
|
||||||
|
id << rv["id"]
|
||||||
|
id.shift
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
POOL << client
|
||||||
|
puts "#{Time.now} 200 GET youtube.com/watch?v=#{video.id} #{elapsed_text(Time.now - time)}"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue