# Read timeout a través de un proxy: causas y tiempos sensatos

> Read timeout a través de un proxy residencial: por qué ocurre, tiempos de conexión y lectura sensatos para scrapers y cómo reintentar sin acumular intentos.

- URL: https://crawlrelay.com/es/docs/errors/read-timeout/
- Última actualización: 2026-10-13
- Publisher: CrawlRelay (https://crawlrelay.com)

Error de tiempo de espera del cliente: el mensaje exacto en cada herramienta, las causas probables en orden y la solución que funciona.

**Respuesta rápida — ¿Qué significa Read timed out (ReadTimeout) con un proxy?**

**Read timeout** significa que tu cliente esperó más que su tiempo de espera de lectura para los siguientes bytes de la respuesta. A través de proxies residenciales CrawlRelay, la demora suele venir de un destino lento o una salida doméstica lenta. Configura tiempos separados de conexión y lectura, cerca de 10 y 30 a 60 segundos para páginas HTML, y reintenta una solicitud con timeout una vez en una salida nueva.

## Read timed out (ReadTimeout) en pocas palabras

| Atributo | Valor |
| --- | --- |
| Error | Read timed out (ReadTimeout) |
| Tipo | Error de tiempo de espera del cliente |
| Enviado por | Tu cliente HTTP, cuando no llegan datos en el tiempo de espera de lectura |
| Definido en | Client setting, no protocol status |
| ¿Reintentar? | Sí, una o dos veces en una nueva salida |
| Primera comprobación | Compara tu tiempo de espera de lectura con el tiempo normal de respuesta del destino |

## ¿Qué significa Read timed out (ReadTimeout)?

Los clientes suelen tener dos temporizadores. El tiempo de conexión limita cuánto espera el cliente para abrir la conexión con el proxy. El tiempo de lectura limita cuánto espera entre bytes una vez enviada la solicitud. Un read timeout indica que la conexión funcionó pero la respuesta fue demasiado lenta.

Sin tiempos explícitos, algunos clientes esperan para siempre. En Python requests, no poner timeout es predeterminado, así que una solicitud atascada puede congelar un worker.

## ¿Cómo se ve a read timeout en Python, curl, Node.js y navegadores?

El mismo fallo se muestra de forma diferente en cada herramienta. Estos son los mensajes que debes buscar en tus registros:

- **Python requests:** `ReadTimeout: HTTPSConnectionPool(...): Read timed out. (read timeout=10)`
- **httpx:** `httpx.ReadTimeout`
- **Node.js:** `ETIMEDOUT`, `ESOCKETTIMEDOUT`, o un `AbortError` de tu propio temporizador
- **Playwright:** `TimeoutError: page.goto: Timeout 30000ms exceeded`

## ¿Qué causa a read timeout?

Lo más probable al principio:

- **Una página destino lenta**, como resultados de búsqueda o páginas dinámicas pesadas.
- **Una salida lenta**: velocidad de subida en casa, Wi-Fi o una celda móvil congestionada.
- **Descargas grandes** leídas en un solo bloque en lugar de en streaming.
- **Tiempos configurados demasiado ajustados** para el tipo de página.
- **Páginas en navegador** que esperan red ociosa en sitios que nunca dejan de cargar trackers.

## ¿Cómo diagnostico a read timeout paso a paso?

1. Mide el tiempo de la solicitud sin el proxy para tener un punto de referencia.
2. Registra tiempo hasta el primer byte y tiempo total por separado.
3. Revisa el tamaño de las respuestas para las URLs lentas.
4. En navegadores, verifica qué condición `waitUntil` usas.

*Prueba la URL que falla con curl (puerto HTTP, modo detallado)*

```bash
# Use the URL that fails; with https://api.ipify.org instead, you test the gateway alone.
# "HTTP/1.1 200 Connection established" first, then the site's own status: the site answered.
curl -v -x http://USERNAME:PASSWORD@gw.crawlrelay.com:7777 https://TARGET_URL

# Same test through the SOCKS5 port, with DNS resolved at the exit
curl -v --socks5-hostname gw.crawlrelay.com:7778 --proxy-user USERNAME:PASSWORD https://TARGET_URL
```

## ¿Cómo soluciono a read timeout?

- **Configura ambos tiempos:** conexión cerca de 10 segundos, lectura 30 a 60 segundos para HTML, más para archivos grandes.
- **Haz streaming de respuestas grandes** y escríbelas en disco por fragmentos.
- **Usa `domcontentloaded`** en Playwright en vez de red ociosa cuando solo necesitas el HTML.
- **Bloquea recursos pesados** que no necesitas en navegadores, como vídeo.
- **Reintenta una vez en una nueva salida**, luego mueve la URL a una cola lenta.

*Python httpx: tiempos de espera explícitos para conectar, leer, escribir y en el pool*

```python
import httpx

proxy = "http://USERNAME:PASSWORD@gw.crawlrelay.com:7777"
timeout = httpx.Timeout(connect=10.0, read=30.0, write=10.0, pool=10.0)

with httpx.Client(proxy=proxy, timeout=timeout) as client:
    try:
        r = client.get("https://api.ipify.org")
        print(r.status_code, r.text)
    except httpx.TimeoutException as exc:
        print("timed out:", type(exc).__name__)  # ConnectTimeout, ReadTimeout...
```

## ¿Debo reintentar después de a read timeout?

Reintenta un read timeout una o dos veces en una salida nueva. Si la misma URL sigue fallando, dale un tiempo de espera más largo en una cola lenta separada en vez de aumentar el timeout para todo. Ten cuidado con efectos secundarios duplicados: solo reintenta solicitudes seguras de repetir, como GET.

## ¿Cómo se aplica Read timed out (ReadTimeout) a CrawlRelay?

Cada nueva conexión CrawlRelay sin ID de sesión usa una salida residencial distinta, así que un reintento también prueba una conexión doméstica distinta. Mantén sesiones pegajosas cortas para destinos lentos: si la salida es lenta, toda solicitud en la sesión lo será.

Gateway: `gw.crawlrelay.com`, puerto 7777 (HTTP, HTTPS a través de CONNECT) y puerto 7778 (SOCKS5). Formato de usuario: `USERNAME-country-{cc}-state-{state}-city-{city}-zip-{zip}-asn-{asn}-session-{id}-ttl-{minutes}`. Relacionado: [504 Gateway Timeout](https://crawlrelay.com/es/docs/errors/504-gateway-timeout/) · [Conexión reiniciada](https://crawlrelay.com/es/docs/errors/connection-reset/) · [Guía de concurrencia](https://crawlrelay.com/es/docs/concurrency/).

## Read timed out (ReadTimeout): preguntas que hacen los desarrolladores

### ¿Qué tiempo de espera debo usar para scraping con proxies?

Empieza con unos 10 segundos para conectar y 30 para leer en páginas HTML, luego ajusta según tus propias mediciones. Las APIs JSON suelen ser más rápidas; archivos grandes y páginas de búsqueda lentas requieren más. Ponlos explícitamente: Python requests no tiene timeout por defecto.

### ¿Un timeout consume mi tráfico?

Solo para los bytes transferidos antes del timeout. Una solicitud que agota el tiempo esperando el primer byte movió casi nada. Una descarga grande que se cancela a mitad sí transfirió datos. Haz streaming de archivos grandes y retómalos donde sea posible.

### ¿Por qué los timeouts ocurren en ráfagas?

A menudo porque el destino se ralentiza bajo carga, a veces tu propia carga. Picos simultáneos en muchas salidas señalan al destino; tiempos de espera aislados señalan salidas individuales lentas. Reduce la concurrencia en el host cuando empieza un pico.

## Otros errores de proxy en esta referencia

- [401 Unauthorized vs 407](https://crawlrelay.com/es/docs/errors/401-unauthorized/)
- [403 Forbidden](https://crawlrelay.com/es/docs/errors/403-forbidden/)
- [407 Proxy Authentication Required](https://crawlrelay.com/es/docs/errors/407-proxy-authentication-required/)
- [429 Too Many Requests](https://crawlrelay.com/es/docs/errors/429-too-many-requests/)
- [502 Bad Gateway](https://crawlrelay.com/es/docs/errors/502-bad-gateway/)
- [503 Service Unavailable](https://crawlrelay.com/es/docs/errors/503-service-unavailable/)
- [504 Gateway Timeout](https://crawlrelay.com/es/docs/errors/504-gateway-timeout/)
- [Cannot connect to proxy (ProxyError)](https://crawlrelay.com/es/docs/errors/cannot-connect-to-proxy/)
- [Connection reset by peer (ECONNRESET)](https://crawlrelay.com/es/docs/errors/connection-reset/)
- [ERR_PROXY_CONNECTION_FAILED](https://crawlrelay.com/es/docs/errors/err-proxy-connection-failed/)
- [ERR_TUNNEL_CONNECTION_FAILED](https://crawlrelay.com/es/docs/errors/err-tunnel-connection-failed/)
- [Read timed out (ReadTimeout)](https://crawlrelay.com/es/docs/errors/read-timeout/)
- [SOCKS5 proxy errors](https://crawlrelay.com/es/docs/errors/socks5-proxy-errors/)
- [SSL: CERTIFICATE_VERIFY_FAILED](https://crawlrelay.com/es/docs/errors/ssl-certificate-verify-failed/)
- [SSL: WRONG_VERSION_NUMBER](https://crawlrelay.com/es/docs/errors/ssl-wrong-version-number/)

**Proxies residenciales con documentación que cubre los casos de fallo** CrawlRelay proxies residenciales de 0,50 US$/GB, tráfico que nunca expira. [Ver precios](https://crawlrelay.com/es/pricing/) · [Inicio rápido](https://crawlrelay.com/es/docs/)

---

CrawlRelay: CrawlRelay es un servicio de proxies residenciales rotativos y proxies móviles 4G/5G para desarrolladores, ideal para scrapers y pipelines de datos de IA: tráfico prepago sin vencimiento desde 0,50 US$/GB, pagado con criptomonedas, sin subir documentos de identidad. Sin KYC — sin ID, sin selfie, sin documentos. Paga con criptomonedas.
