O que é um worker
Worker é um processo ou componente de execução que realiza tarefas, frequentemente em segundo plano. Em um sistema com fila, ele recebe um job, executa o trabalho correspondente e registra seu resultado conforme o mecanismo da ferramenta.
Uma aplicação pode receber a solicitação de uma planilha e deixá-la aguardando enquanto um worker faz a consulta e gera o arquivo. Essa separação permite que o atendimento HTTP termine antes do processamento demorado, desde que exista uma forma de acompanhar e recuperar o resultado depois.
O trabalho recebido precisa de recursos para executar
O worker precisa acessar a fila e os serviços usados pela tarefa. Para gerar uma planilha, isso pode incluir permissão de consulta ao banco e acesso ao local que armazenará o arquivo, além de memória suficiente para o volume processado.
Estar ativo como processo não comprova que ele consegue concluir jobs. Um worker pode continuar funcionando enquanto todas as tarefas falham por credencial expirada ou enquanto tenta se conectar a uma fila cujo endereço foi alterado.
Quantidade de workers e concorrência
A quantidade de processos e a quantidade de tarefas simultâneas por processo são configurações diferentes. Um worker pode executar vários jobs ao mesmo tempo se a ferramenta oferecer essa capacidade, enquanto vários workers podem compartilhar o trabalho disponível na mesma fila.
A concorrência adequada depende da tarefa. Quando os jobs passam boa parte do tempo esperando uma API, pode haver espaço para atender outras tarefas durante a espera, mas um processamento intenso de CPU continua limitado pelos recursos disponíveis.
Mais workers podem produzir mais chamadas simultâneas aos serviços acessados, conforme as tarefas disponíveis. Se todos consultam o mesmo banco ou a mesma API, você precisa observar as conexões e os limites do destino, pois o aumento pode produzir mais recusas e novas tentativas em vez de reduzir a espera.
O que acontece quando o processo para
Uma tarefa pode ser interrompida por encerramento do processo, perda de conexão ou indisponibilidade da máquina. Algumas filas exigem que o worker sinalize periodicamente que continua processando o job. A ausência desse sinal permite identificar tarefas que precisam de tratamento, conforme o mecanismo e a configuração da ferramenta.
No BullMQ, a falta dessa atualização pode levar o job de volta à espera ou encerrá-lo como falho, conforme o limite configurado para ocorrências do evento stalled. Isso também pode acontecer quando um processamento intenso ocupa o event loop e impede a atualização, mesmo com o processo ainda ativo. Investigue o motivo da interrupção do acompanhamento antes de atribuí-la ao encerramento do worker.
A recuperação também precisa considerar o que já aconteceu no destino. Se o worker enviou uma mensagem e parou antes de registrar a conclusão, a próxima tentativa pode repetir o envio, a menos que o processamento trate esse caso.
Como acompanhar o processamento
Observe quantos jobs começam e terminam, quanto tempo demoram e quais erros se repetem. Compare esses registros com a idade das tarefas na fila, porque uma quantidade pequena de jobs antigos também pode representar trabalho que deixou de avançar.
Ao substituir ou reiniciar workers, confira como a ferramenta encerra tarefas em andamento e como as retoma. O teste deve acompanhar um job até o resultado final, incluindo a possibilidade de uma nova tentativa, sem presumir que o processo ativo ou a fila vazia comprovam a conclusão de todos os efeitos.
Dúvidas frequentes
Perguntas frequentes sobre Worker
- Um worker processa apenas um job por vez?
- Depende da implementação e da configuração. Algumas ferramentas permitem várias tarefas simultâneas no mesmo worker, além de múltiplos processos consumindo a fila.
- Mais workers sempre reduzem o tempo de espera?
- Não. O processamento também depende de CPU, memória, banco, rede e limites dos serviços acessados. Mais processos podem aumentar a disputa pelos mesmos recursos.
- O que acontece se o worker parar durante um job?
- A recuperação depende da ferramenta. O trabalho pode voltar a ficar disponível para outra tentativa ou ser marcado como falho. Efeitos realizados antes da parada precisam ser considerados.
- Como verificar se um worker está funcionando?
- Além de conferir se o processo está ativo, acompanhe tarefas iniciadas e concluídas, duração e erros. Um processo pode estar vivo sem conseguir consumir a fila ou acessar o serviço necessário.
Para continuar
Recursos relacionados
Documentação
BullMQ: workers
Responsabilidade dos workers e resultado do processamento.
Abrir recursoDocumentação
BullMQ: concorrência de workers
Diferença entre concorrência local e múltiplos workers.
Abrir recursoDocumentação
BullMQ: jobs interrompidos
Detecção e recuperação de tarefas sem renovação do acompanhamento pelo worker.
Abrir recursoAplicação na formação
n8n Experts
Workers executam tarefas das automações e precisam ser considerados junto com as filas e a capacidade de processamento.
Conhecer a formação
Fontes consultadas
Referências deste verbete
Este verbete ajudou você?
Obrigado pela resposta. Ela fica salva apenas neste navegador.