Equipe e plataformaGuia

Workers

Um worker é o processo que roda o seu código. Uma única imagem de worker cobre todas as linguagens — Python, TypeScript, JavaScript, C, C++ e SQL — e roda várias tarefas ao mesmo tempo. Para rodar mais coisas juntas, adicione workers; a aba Workers mostra cada um ao vivo e deixa você reservar um worker para alguns projetos ou algumas linguagens.

O que você vai aprender
  • Acompanhar uma tarefa da fila até o resultado
  • Ler o cartão de um worker: status, vagas, memória, o que roda agora
  • Atribuir um worker a projetos ou restringir as linguagens dele
  • Adicionar workers para rodar mais tarefas ao mesmo tempo

Da fila ao resultado

Clicar em Executar, um agendamento disparando ou uma chamada de API fazem a mesma coisa: colocam uma tarefa na fila. Um worker que atende o projeto e a linguagem da tarefa a pega, e cada tarefa é pega por exatamente um worker — nunca por dois ao mesmo tempo.

  1. Pegar — a tarefa é reservada por um worker com uma vaga livre.
  2. Instalar — os pacotes que o script importa são instalados no primeiro uso e guardados para a próxima execução.
  3. Rodar — o código roda isolado, num ambiente limpo, sem rede e sem acesso ao banco da plataforma.
  4. Registrar — o resultado e os logs são guardados, e a tela que está esperando recebe tudo assim que a tarefa termina.
ProjetosWorkers3Usuários
As máquinas que rodam seus scripts e flows. Um worker sem atribuição atende todos os projetos.
Buscar workers…Ctrl KOnline · 3Ocupados · 2ao vivo · atualiza a cada 5s
worker-98142bb7 StatusOnlineVagas3/12Tarefas1,284Média41 msMem212 MBRodando agora report.py
worker-606b8c73 StatusOnlineVagas1/12Tarefas1,197Média38 msMem164 MBRodando agora greet.ts
worker-eb57a201 StatusOnlineVagas0/12Tarefas1,206Média40 msMem98 MBRodando agora—
A aba Workers: um cartão por worker com o status, as vagas ocupadas e livres, a memória, as tarefas feitas e o que está rodando agora.

A aba Workers

Na página de projetos, abra Workers. O cabeçalho conta a frota — online, ocupados, offline, tarefas executadas no total — e atualiza a cada 5 segundos. Filtre por linguagem ou status, ou busque pelo nome.

No cartãoO que diz
StatusOnline: pronto para trabalhar. Ocupado: rodando uma tarefa agora. Offline: fora do ar — pode ter travado ou sido parado.
VagasQuantas tarefas ele roda ao mesmo tempo, as ocupadas em âmbar e as livres em verde. SQL tem uma linha própria.
MemóriaO uso contra o limite, de Bastante espaço disponível a Crítico — quase sem memória.
Tarefas executadas · Tempo médioTarefas concluídas desde que ele iniciou, e o tempo médio delas.
Rodando agoraO script que ele roda agora, com Acompanhar → para seguir ao vivo.

A aba Versões das linguagens lista as versões de runtime que a frota oferece e quais scripts seguem ou fixam cada uma — veja Versões de runtime.

Reserve um worker para alguns projetos

Um worker sem atribuição é global: aceita tarefas de qualquer projeto. Atribuí-lo reserva o worker só para esses projetos — útil para dar a um projeto importante uma capacidade que ninguém mais pode tomar.

  1. Abra o worker

    Clique no cartão para abrir os detalhes.

  2. Restrinja

    Clique em + Restringir a projetos e escolha os projetos, ou em Atribuir somente a este projeto de dentro de um projeto.

  3. Desfaça quando quiser

    ↺ Todos os projetos torna o worker global de novo. Remover o último projeto dele faz o mesmo.

Rode mais ao mesmo tempo

Cada worker roda até WORKER_CONCURRENCY tarefas ao mesmo tempo (12 por padrão) e, à parte, até WORKER_SQL_CONCURRENCY consultas SQL (4 por padrão) com conexões de banco prontas. Para rodar mais coisas juntas, suba mais workers — numa instalação self-hosted:

Shellterminal
docker compose up -d --scale worker=3

SQL roda no mesmo worker

Não existe um serviço SQL separado: scripts PostgreSQL e MySQL, passos SQL de flows e o workbench SQL rodam dentro de cada worker, nas vagas próprias deles, então um relatório demorado nunca toma a vaga de um script.