Notas de quickstart
Reconecte o stream de quedas quando ele morre em Python
Streams caem. O listener que sobrevive é o que reconecta com uma pausa crescente e continua lendo a partir da conexão nova.
Todo stream de vida longa termina uma hora: a rede pisca, o servidor te derruba por inatividade, seu host reinicia. O listener que sobrevive não é o que nunca desconecta; é o que reconecta limpo. Aqui está o padrão que mantém o listener de Python vivo por semanas.
A falha é normal
O listener do quickstart de Python mantém uma requisição HTTP aberta e lê linhas data: conforme chegam, verificado em 2026-10-17. Quando a conexão morre, o loop de leitura termina com uma exceção ou um iterador travado, e a reação errada é quebrar ou martelar o endpoint com novas tentativas instantâneas. A reação certa é uma pausa crescente e uma conexão nova.
O padrão de reconexão
Envolva o listener num loop externo com um atraso que dobra após cada falha e reinicia após um trecho de sucesso:
delay = 1
while True:
try:
listen() # the stream loop; returns when it ends
delay = 1 # it ran fine: reset
except Exception as exc:
print("stream ended:", exc)
time.sleep(delay)
delay = min(delay * 2, 60)
Observar o próprio atraso crescer ao longo de um mês é um sinal em si, porque um teto que você continua subindo sem notar é uma agenda derivando. O teto importa tanto quanto a dobra: um teto de 60 segundos impede que uma noite ruim vire um buraco de 15 minutos entre tentativas, e o reinício no sucesso impede que uma semana boa acumule um atraso longo.
O que uma reconexão perde, e o que fazer sobre isso
Qualquer coisa que caiu enquanto você estava desconectado se foi do stream; streams não repetem. Se a lacuna importa para a sua aplicação, preencha-a depois a partir do endpoint de quedas, que o quickstart de curl cobre para quedas recentes sob demanda. Se não importa, retome e deixe a próxima queda chegar.
Numa reconexão você também recebe uma nova mensagem de controle connected, então o seu parser a vê de novo: trate-a do mesmo jeito todas as vezes, e uma segunda saudação não muda nada.
Quando as próprias reconexões são o problema
Um listener que reconecta a cada poucos minutos está te dizendo algo: a rede, o proxy, ou o endpoint. Registre cada reconexão com o tempo desde a última, e uma semana de logs separa um link saudável de um doente. Se as falhas se concentram numa hora do dia, a resposta é infraestrutura, não código.
Loop externo, pausa crescente, teto de 60 segundos, lacuna preenchida se importa. O stream vai te derrubar; o listener decide se alguém nota.