Risposta rapida
Cosa significa 504 Gateway Timeout con un proxy?
504 Gateway Timeout significa che un gateway, come il proxy o il CDN del sito, ha atteso troppo per il server successivo e ha rinunciato. Tramite proxy residentiali CrawlRelay, il collo di bottiglia è solitamente il target o la connessione domestica dell’exit. Riprova una volta su un exit nuovo, tieni leggere le pagine e imposta timeout client per far fallire in modo controllato una richiesta lenta.
504 Gateway Timeout a colpo d'occhio
| Errore | 504 Gateway Timeout |
|---|---|
| Tipo | Codice di stato HTTP (5xx, errore server) |
| Inviato da | Il gateway proxy o un CDN davanti al target |
| Definito in | RFC 9110, section 15.6.5 |
| Riprovarlo? | Sì, una o due volte su un nuovo exit |
| Prima verifica | Cronometra la stessa richiesta senza proxy |
Cosa significa 504 Gateway Timeout?
La RFC 9110 definisce 504 come un gateway che non ha ricevuto una risposta tempestiva dal server a monte necessario. È il fratello timeout del 502: 502 significa risposta errata, 504 significa nessuna risposta in tempo.
Un proxy residential aggiunge un passaggio che una richiesta diretta non ha: il traffico passa al gateway, poi a una connessione domestica, poi al sito. Ogni passaggio aggiunge ritardo, e quello più lento decide il totale.
Com'è a 504 in Python, curl, Node.js e browser?
Lo stesso errore si presenta in modo diverso in ogni strumento. Questi sono i messaggi da cercare nei log:
- Python requests:
status_code == 504, oTunnel connection failed: 504 Gateway Timeoutper target HTTPS - curl:
curl: (56) CONNECT tunnel failed, response 504 - Scrapy: ritenta di default (504 in
RETRY_HTTP_CODES) - Siti serviti da CDN: una pagina errore dal CDN con stato 504
Cosa causa a 504?
Probabilmente prima:
- Un target lento, per esempio una pagina di ricerca che impiega molti secondi a elaborare.
- Un exit lento, come una connessione domestica debole o una cella mobile congestionata.
- Risposte grandi che impiegano più tempo della pazienza del gateway.
- Timeout dell’origine del sito dietro il suo CDN, che risponde 504.
Come diagnostico a 504 passo dopo passo?
- Cronometra la richiesta senza proxy. Se anche da casa è lenta, il target è lento.
- Riprova su un exit nuovo e confronta i tempi.
- Controlla la dimensione della risposta: una pagina da 5 MB è un problema diverso da una da 50 KB.
- Leggi il corpo per capire se la pagina errore è del CDN o del proxy.
# 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:[email protected]: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_URLCome risolvo a 504?
- Imposta timeout espliciti: circa 10 secondi per la connessione e da 30 a 60 per leggere pagine normali.
- Riprova su un exit nuovo una o due volte.
- Richiedi meno: salta immagini e media se ti serve solo l’HTML o l’API JSON dietro la pagina.
- Programma le pagine pesanti in orari non di punta per il paese target.
import httpx
proxy = "http://USERNAME:[email protected]: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...Devo riprovare dopo a 504?
Riprova un 504 una o due volte su una nuova exit, con un breve backoff. Se lo stesso URL scade su più exit, il target è lento o sovraccarico: riduci il ritmo su quell'host o prova più tardi. Aumentare il timeout client aiuta solo se il timeout del gateway non è il limite.
Come si applica 504 Gateway Timeout a CrawlRelay?
Ogni nuova connessione a CrawlRelay senza un ID di sessione di solito ottiene una exit residenziale diversa, quindi un retry normalmente prova un'altra connessione home. Per i target lenti, mantieni piccoli i payload e misura il tempo al primo byte separatamente dal tempo totale di download.
Gateway: gw.crawlrelay.com, porta 7777 (HTTP, HTTPS tramite CONNECT) e porta 7778 (SOCKS5). Formato username: USERNAME-country-{cc}-state-{state}-city-{city}-zip-{zip}-asn-{asn}-session-{id}-ttl-{minutes}. Correlato: 502 Bad Gateway · Read timed out · 503 Service Unavailable.
504 Gateway Timeout: domande frequenti dagli sviluppatori
Qual è la differenza tra 502 e 504?
Entrambi vengono da un gateway. Un 502 significa che il server dietro ha inviato una risposta non valida o ha chiuso la connessione. Un 504 significa che non ha inviato nulla in tempo. Con i proxy residenziali, 502 spesso indica un'exit caduta, e 504 un target lento o una connessione home lenta.
Posso aumentare il timeout del proxy?
Tu controlli i timeout del client, non quelli interni del gateway. Imposta esplicitamente connect e read timeout così le richieste lente falliscono prevedibilmente, ritenti su una nuova exit e rendi le pagine più leggere. Se un target richiede risposte molto lunghe, prendi la sua API o una pagina più leggera invece.
I proxy mobili sono più lenti di quelli residenziali?
Possono esserlo, perché un'exit mobile condivide una cella con altri utenti e la sua velocità cambia con il segnale e il carico. Usa IP mobili per target che ne hanno bisogno e IP residenziali per crawls bulk. Misura i tuoi tempi di risposta per tipo di exit prima di decidere.
Altri errori proxy in questo riferimento
Codici di stato HTTP
- 401 Unauthorized vs 407
- 403 Forbidden
- 407 Proxy Authentication Required
- 429 Too Many Requests
- 502 Bad Gateway
- 503 Service Unavailable
- 504 Gateway Timeout
Errori del browser e client
Errori di connessione e TLS
Proxy residenziali con documentazione che copre i casi di errore
Proxy residenziali CrawlRelay da 0,50 USD/GB, traffico che non scade mai.