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.
##
## When unset this value has the same value as pool_size
@ -163,8 +163,17 @@ https_only: false
## Accepted values: a positive integer
## 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}",
}
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
GGPHT_POOL = Invidious::ConnectionPool::Pool.new(
URI.parse("https://yt3.ggpht.com"),
max_capacity: CONFIG.pool_size,
idle_capacity: CONFIG.idle_pool_size
idle_capacity: CONFIG.idle_pool_size,
timeout: CONFIG.pool_checkout_timeout
)
# 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)
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
property http_proxy : HTTPProxyConfig? = nil

View File

@ -79,7 +79,8 @@ module Invidious::ConnectionPool
pool = Invidious::ConnectionPool::Pool.new(
URI.parse("https://#{subdomain}.ytimg.com"),
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