Timeouts e Novas Tentativas
Lição 45 de 47 do curso Redes com o Terminal da Coddy.
Por padrão, o curl espera por um tempo muito longo. Em um script, isso é um bug: um host inacessível e seu trabalho fica travado até que alguém perceba.
curl -s --max-time 5 --connect-timeout 2 URL--connect-timeout limita quanto tempo deve ser gasto para estabelecer a conexão. --max-time limita a operação inteira. Exceder qualquer um deles resulta no código de saída 28.
Fazer novas tentativas exige mais cuidado do que parece. Repetir um GET ou PUT que falhou é seguro, porque ambos são idempotentes. Repetir um POST pode criar um segundo registro, e um tempo limite é o pior caso para isso: você nunca soube se o primeiro foi processado.
Portanto, faça novas tentativas de leituras livremente e pense antes de repetir gravações. Quando for necessário, peça ao servidor uma forma de tornar isso seguro, como uma chave de idempotência.
Desafio
MédioEstabeleça um limite para uma solicitação que nunca será respondida.
Solicite http://10.255.255.1/, um endereço que silenciosamente descarta o tráfego, desistindo após 2 segundos, e imprima gave up: seguido do código de saída do curl.
Saída esperada:
gave up: 28Sem um tempo limite, essa solicitação ficaria travada por bem mais de um minuto.
Experimente você mesmo
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Redes com o Terminal
2Nomes e DNS
Por que os nomes existemO arquivo hostsConsultando um nomeTipos de registrosRecapitulação: nomes3Portas e Sockets
O que é uma portaPortas conhecidasLocalhostEscutando vs. conectandoRecapitulação: portas6curl em Detalhes
Visualizando os CabeçalhosSalvando RespostasCabeçalhos PersonalizadosStatus e TempoCódigos de Saída do curlRecapitulação: Opções do curl9Autenticação e Depuração
Chaves de API e BearerO User AgentTimeouts e Novas TentativasLendo uma FalhaRevisão: DepuraçãoPratique por conta própria: Playground de Terminal