Menu
Coddy logo textTech

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.

challenge icon

Desafio

Médio

Estabeleç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: 28

Sem um tempo limite, essa solicitação ficaria travada por bem mais de um minuto.

Experimente você mesmo

Terminal
quiz iconTeste seus conhecimentos

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

Pratique por conta própria: Playground de Terminal