Resposta rápida
O que 504 Gateway Timeout significa com um proxy?
504 Gateway Timeout significa que um gateway, como o proxy ou CDN do site, esperou demais pelo servidor seguinte e desistiu. Via proxies residenciais do CrawlRelay, a conexão lenta é geralmente o alvo ou a conexão residencial da saída. Tente uma vez numa saída nova, mantenha as páginas leves e ajuste seus próprios timeouts para falhar na sua regra se a requisição estiver lenta.
504 Gateway Timeout de relance
| Erro | 504 Gateway Timeout |
|---|---|
| Tipo | Código de status HTTP (5xx, erro do servidor) |
| Enviado por | O gateway proxy ou uma CDN na frente do alvo |
| Definido em | RFC 9110, section 15.6.5 |
| Tentar novamente? | Sim, uma ou duas vezes em uma nova saída |
| Primeira verificação | Meça o mesmo pedido sem o proxy |
O que 504 Gateway Timeout significa?
RFC 9110 define 504 como gateway que não recebeu resposta a tempo do servidor upstream necessário. É o irmão timeout do 502: 502 é resposta ruim, 504 é sem resposta a tempo.
Proxy residencial adiciona um salto que requisição direta não tem: seu tráfego vai ao gateway, depois à conexão residencial, depois ao site. Cada salto adiciona atraso, e o mais lento decide o total.
Como a 504 aparece em Python, curl, Node.js e navegadores?
A mesma falha aparece de forma diferente em cada ferramenta. Estas são as mensagens para buscar nos seus logs:
- Python requests:
status_code == 504, ouTunnel connection failed: 504 Gateway Timeoutpara alvos HTTPS - curl:
curl: (56) CONNECT tunnel failed, response 504 - Scrapy: tenta de novo por padrão (504 está em
RETRY_HTTP_CODES) - Sites com CDN: página de erro da CDN com status 504
O que causa a 504?
Mais provável inicialmente:
- Alvo lento, por exemplo página de busca que demora segundos para montar.
- Saída lenta, como conexão residencial fraca ou célula móvel congestionada.
- Respostas grandes que demoram mais que a paciência do gateway.
- Timeout do origem do site atrás da CDN, que responde 504.
Como diagnosticar a 504 passo a passo?
- Meça a requisição sem proxy. Lento em casa também indica alvo lento.
- Tente numa saída nova e compare o tempo.
- Veja o tamanho da resposta: 5 MB é problema diferente de 50 KB.
- Leia o corpo para ver se CDN ou proxy escreveu a página de erro.
# 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_URLComo corrigir a 504?
- Ajuste timeouts explícitos: cerca de 10 segundos para conectar e 30-60 segundos para ler em páginas normais.
- Tente numa nova saída uma ou duas vezes.
- Peça menos: ignore imagens e mídia se só quer HTML ou API JSON por trás da página.
- Agende páginas pesadas em horários fora de pico para o país alvo.
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 tentar novamente após a 504?
Tente novamente um erro 504 uma ou duas vezes em uma saída nova, com um pequeno intervalo. Se a mesma URL expirar em várias saídas, o alvo está lento ou sobrecarregado: diminua sua taxa nesse host ou tente mais tarde. Aumentar o tempo limite do seu cliente ajuda só se o tempo limite do gateway não for o limite.
Como 504 Gateway Timeout se aplica ao CrawlRelay?
Cada nova conexão ao CrawlRelay sem um ID de sessão normalmente usa uma saída residencial diferente, então uma nova tentativa geralmente testa outra conexão residencial. Para alvos lentos, mantenha os pacotes pequenos e meça o tempo até o primeiro byte separadamente do tempo total de download.
Gateway: gw.crawlrelay.com, porta 7777 (HTTP, HTTPS via CONNECT) e porta 7778 (SOCKS5). Formato do usuário: USERNAME-country-{cc}-state-{state}-city-{city}-zip-{zip}-asn-{asn}-session-{id}-ttl-{minutes}. Relacionado: 502 Bad Gateway · Read timed out · 503 Service Unavailable.
504 Gateway Timeout: perguntas que desenvolvedores fazem
Qual é a diferença entre 502 e 504?
Ambos vêm de um gateway. Um 502 significa que o servidor atrás dele enviou uma resposta inválida ou perdeu a conexão. Um 504 indica que não enviou nada a tempo. Com proxies residenciais, 502 costuma indicar uma saída desconectada, e 504 um alvo lento ou uma conexão residencial lenta.
Posso aumentar o tempo limite do proxy?
Você controla os tempos limite do seu cliente, não os internos do gateway. Defina explicitamente os tempos limite de conexão e leitura para que requisições lentas falhem previsivelmente, retry em uma nova saída e torne as páginas mais leves. Se um alvo precisa de respostas muito longas, acesse sua API ou uma página mais leve.
Proxies móveis são mais lentos que proxies residenciais?
Podem ser, porque uma saída móvel compartilha a célula com outros usuários e a velocidade varia com o sinal e a carga. Use IPs móveis para alvos que os necessitam e IPs residenciais para crawls em massa. Meça seus próprios tempos de resposta por tipo de saída antes de decidir.
Outros erros de proxy nesta referência
Códigos de status HTTP
- 401 Unauthorized vs 407
- 403 Forbidden
- 407 Proxy Authentication Required
- 429 Too Many Requests
- 502 Bad Gateway
- 503 Service Unavailable
- 504 Gateway Timeout
Erros no navegador e cliente
Erros de conexão e TLS
Proxies residenciais com documentação que cobre os casos de falha
CrawlRelay proxies residenciais a partir de US$ 0,50/GB, tráfego que nunca expira.