pnclFEED Chave gratuita

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.