Reutilizar un cliente en Rust
Un solo Client, configurado una vez: pool de conexiones, timeouts, encabezados por defecto.
use std::time::Duration;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = reqwest::Client::builder()
.timeout(Duration::from_secs(10))
.user_agent("typestar-cli/2.1")
.build()?;
for path in ["healthz", "api/paths?lang=rust"] {
let url = format!("https://typestar.io/{path}");
let status = client.get(&url).send().await?.status();
println!("{status} {path}");
}
Ok(())
}
Cómo funciona
- Armar un cliente por petición tira el pool a la basura.
timeoutacota la petición completa.- Los encabezados por defecto aplican a todo lo que el cliente envía.
Palabras clave y builtins usados aquí
BoxOkResultasyncawaitdynfnforinletuse
El intento, en números
- Líneas
- 16
- Caracteres a escribir
- 410
- Tokens
- 124
- Ritmo de tres estrellas
- 110 tpm
Al ritmo de tres estrellas de 110 tokens por minuto, este intento toma unos 68 segundos.
Paso 5 de 5 en Peticiones con reqwest; paso 11 de 12 en Herramientas CLI y clientes HTTP.