Add config to set connection pool checkout timeout

This commit is contained in:
syeopite 2024-11-11 16:26:58 -08:00
parent c026a7b1f6
commit 07caf93fbd
No known key found for this signature in database
GPG Key ID: A73C186DA3955A1A
4 changed files with 24 additions and 5 deletions

View File

@ -155,7 +155,7 @@ https_only: false
## ##
## Idle size of the HTTP pool used to connect to youtube. Each ## Max idle size of the HTTP pool used to connect to youtube. Each
## domain ('youtube.com', 'ytimg.com', ...) has its own pool. ## domain ('youtube.com', 'ytimg.com', ...) has its own pool.
## ##
## When unset this value has the same value as pool_size ## When unset this value has the same value as pool_size
@ -163,8 +163,17 @@ https_only: false
## Accepted values: a positive integer ## Accepted values: a positive integer
## Default: <none> (internally this means that it has the same value as pool_size) ## Default: <none> (internally this means that it has the same value as pool_size)
## ##
#idle pool_size: 100 #idle_pool_size: 100
##
## Amount of seconds to wait for a client to be free from the pool
## before raising an error
##
##
## Accepted values: a positive integer
## Default: 5
##
#pool_checkout_timeout: 5
## ##

View File

@ -92,14 +92,20 @@ SOFTWARE = {
"branch" => "#{CURRENT_BRANCH}", "branch" => "#{CURRENT_BRANCH}",
} }
YT_POOL = Invidious::ConnectionPool::Pool.new(YT_URL, max_capacity: CONFIG.pool_size, idle_capacity: CONFIG.idle_pool_size) YT_POOL = Invidious::ConnectionPool::Pool.new(
YT_URL,
max_capacity: CONFIG.pool_size,
idle_capacity: CONFIG.idle_pool_size,
timeout: CONFIG.pool_checkout_timeout
)
# Image request pool # Image request pool
GGPHT_POOL = Invidious::ConnectionPool::Pool.new( GGPHT_POOL = Invidious::ConnectionPool::Pool.new(
URI.parse("https://yt3.ggpht.com"), URI.parse("https://yt3.ggpht.com"),
max_capacity: CONFIG.pool_size, max_capacity: CONFIG.pool_size,
idle_capacity: CONFIG.idle_pool_size idle_capacity: CONFIG.idle_pool_size,
timeout: CONFIG.pool_checkout_timeout
) )
# CLI # CLI

View File

@ -144,6 +144,9 @@ class Config
# Idle pool size for HTTP requests to youtube.com and ytimg.com (each domain has a separate pool) # Idle pool size for HTTP requests to youtube.com and ytimg.com (each domain has a separate pool)
property idle_pool_size : Int32? = nil property idle_pool_size : Int32? = nil
# Amount of seconds to wait for a client to be free from the pool before rasing an error
property pool_checkout_timeout : Int32 = 5
# HTTP Proxy configuration # HTTP Proxy configuration
property http_proxy : HTTPProxyConfig? = nil property http_proxy : HTTPProxyConfig? = nil

View File

@ -79,7 +79,8 @@ module Invidious::ConnectionPool
pool = Invidious::ConnectionPool::Pool.new( pool = Invidious::ConnectionPool::Pool.new(
URI.parse("https://#{subdomain}.ytimg.com"), URI.parse("https://#{subdomain}.ytimg.com"),
max_capacity: CONFIG.pool_size, max_capacity: CONFIG.pool_size,
idle_capacity: CONFIG.idle_pool_size idle_capacity: CONFIG.idle_pool_size,
timeout: CONFIG.pool_checkout_timeout
) )
YTIMG_POOLS[subdomain] = pool YTIMG_POOLS[subdomain] = pool