Keep client in thread-local storage

This commit is contained in:
asonix 2023-06-23 15:01:56 -05:00
parent e005adfcf8
commit 74f35faa22

View file

@ -162,7 +162,14 @@ impl std::fmt::Debug for Requests {
} }
} }
thread_local! {
static CLIENT: std::cell::OnceCell<Client> = std::cell::OnceCell::new();
}
pub(crate) fn build_client(user_agent: &str, pool_size: usize) -> Client { pub(crate) fn build_client(user_agent: &str, pool_size: usize) -> Client {
CLIENT.with(|client| {
client
.get_or_init(|| {
let connector = Connector::new().limit(pool_size); let connector = Connector::new().limit(pool_size);
Client::builder() Client::builder()
@ -171,6 +178,9 @@ pub(crate) fn build_client(user_agent: &str, pool_size: usize) -> Client {
.add_default_header(("User-Agent", user_agent.to_string())) .add_default_header(("User-Agent", user_agent.to_string()))
.timeout(Duration::from_secs(15)) .timeout(Duration::from_secs(15))
.finish() .finish()
})
.clone()
})
} }
impl Requests { impl Requests {