Eventos em direto

Saiba quando as tarefas e as definições mudam, em vez de fazer polling

  1. O stream
  2. Nomes dos eventos
  3. Mantê-lo aberto
  4. Saúde e métricas

O servidor informa os seus clientes do que muda, à medida que muda. Um script também pode ficar à escuta, em vez de ler uma tarefa a cada poucos segundos.


O stream

GET /api/v2/events é um stream de server-sent events que se mantém aberto. Qualquer utilizador com sessão iniciada o pode abrir, com o bearer token habitual:

curl -N https://af.example.com/api/v2/events -H "Authorization: Bearer <token>"

Quando algo muda, envia um evento changed com o nome do que mudou:

event: changed
data: {"name":"jobs"}

Nomes dos eventos

Um evento transporta apenas um nome, nunca dados, por isso não revela nada que o utilizador não possa ver. São enviados estes nomes:

Nome O que mudou
jobs Uma tarefa: lançada, o seu estado ou saída, eliminada
appearance As definições que o cabeçalho mostra: o tema, o nome, um anúncio, uma variável de ambiente
designer Um bloqueio do designer, obtido ou libertado
runners Um runner (a partir da 7.3.0): um RTE ligou-se ou desligou-se, pediu para aderir, foi aprovado ou rejeitado, ou alterou o seu modo ou as suas definições

Ao receber um nome, volte a ler o que mostra através da API normal (por exemplo GET /api/v2/job/42), com as suas próprias permissões. Um nome muito ativo é enviado no máximo uma vez por segundo.


Mantê-lo aberto

O stream foi feito para sobreviver a proxies e balanceadores de carga, e um cliente volta a ligar-se sozinho:

  • Ao ligar-se, o servidor envia um evento hello, e pede ao cliente que aguarde 3 segundos antes de voltar a ligar-se.
  • A cada 15 segundos envia uma linha de comentário (: ping), para que uma ligação inativa não seja fechada. Ignore as linhas que começam por :.
  • Os eventos de todos os nós da aplicação chegam a todos os streams, seja qual for o nó a que o cliente está ligado.
  • Depois de voltar a ligar-se, volte a ler o que mostra: um evento enviado enquanto o stream estava em baixo não é enviado novamente.

Saúde e métricas

As sondas de liveness e readiness (/api/v2/live, /api/v2/ready) e as métricas Prometheus (/api/v2/metrics) destinam-se a ferramentas de monitorização e não a scripts que atuam como um utilizador. Consulte Monitorização.