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.
- 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.
- Pegar — a tarefa é reservada por um worker com uma vaga livre.
- Instalar — os pacotes que o script importa são instalados no primeiro uso e guardados para a próxima execução.
- Rodar — o código roda isolado, num ambiente limpo, sem rede e sem acesso ao banco da plataforma.
- Registrar — o resultado e os logs são guardados, e a tela que está esperando recebe tudo assim que a tarefa termina.
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ão | O que diz |
|---|---|
| Status | Online: pronto para trabalhar. Ocupado: rodando uma tarefa agora. Offline: fora do ar — pode ter travado ou sido parado. |
| Vagas | Quantas tarefas ele roda ao mesmo tempo, as ocupadas em âmbar e as livres em verde. SQL tem uma linha própria. |
| Memória | O uso contra o limite, de Bastante espaço disponível a Crítico — quase sem memória. |
| Tarefas executadas · Tempo médio | Tarefas concluídas desde que ele iniciou, e o tempo médio delas. |
| Rodando agora | O 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.
- Abra o worker
Clique no cartão para abrir os detalhes.
- Restrinja
Clique em + Restringir a projetos e escolha os projetos, ou em Atribuir somente a este projeto de dentro de um projeto.
- 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:
docker compose up -d --scale worker=3SQL 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.