Pull rank_videos into seperate thread

This commit is contained in:
Omar Roth 2018-02-07 22:04:47 -06:00
parent a017f4cc30
commit 5159ec0f6e
2 changed files with 27 additions and 17 deletions

View file

@ -109,26 +109,36 @@ threads.times do
end
end
macro templated(filename)
render "src/views/#{{{filename}}}.ecr", "src/views/layout.ecr"
end
top_videos = [] of Video
get "/" do |env|
spawn do
loop do
top = rank_videos(PG_DB, 120)
client = get_client(pool)
args = [] of String
1..(top.size - 1).times { |i| args << "($#{i + 1}), " }
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)
videos << video
top_videos << video
end
end
pool << client
sleep 5.minutes
end
end
macro templated(filename)
render "src/views/#{{{filename}}}.ecr", "src/views/layout.ecr"
end
get "/" do |env|
templated "index"
end
@ -259,7 +269,7 @@ get "/:path" do |env|
end
error 500 do |env|
"Error 500"
templated "index"
end
public_folder "assets"

View file

@ -2,7 +2,7 @@
<title>Invidious</title>
<% end %>
<% videos.each_slice(4) do |slice| %>
<% top_videos.each_slice(4) do |slice| %>
<div class="pure-g">
<% slice.each do |video| %>
<% player_response = JSON.parse(video.info["player_response"]) %>